Tôi đã xem qua một loạt bài đăng về chủ đề này. Có lẽ tôi đã không chạy qua "một" và ai đó sẽ chỉ cho tôi theo hướng đó. Câu hỏi rất đơn giản và có thể có một câu trả lời đơn giản.Làm thế nào để khai báo các biến mẫu và các phương thức không hiển thị hoặc không thể sử dụng bên ngoài thể hiện của lớp?
Nếu bạn có hai ivars, nói "public_ivar" và "private_ivar", bạn nên khai báo chúng ở đâu ra công khai và những gì là riêng tư không được hiển thị dưới bất kỳ hình thức nào tập tin?
Câu hỏi tương tự trong trường hợp "public_method" và "private_method".
Tôi thích các tệp tiêu đề sạch (bằng các ngôn ngữ khác) chỉ hiển thị các phương pháp và ivars mà tôi muốn người khác xem. Bạn sẽ có thể xuất bản tập tin tiêu đề của bạn và không chạy vào nguy hiểm của một người nào đó truy cập vào một cái gì đó mà họ không được phép. Làm thế nào để bạn làm điều đó trong mục tiêu-C. Ví dụ, giả sử rằng tôi quyết định rằng tôi cần phải sử dụng một ngà voi để theo dõi một số dữ liệu, một bộ đếm hoặc một cái gì đó tương tự, giữa các phương thức lớp khác nhau mà tất cả đều cần truy cập vào thông tin này. Nếu ivar đó được khai báo thông thường trong header dưới @interface, sự tồn tại của nó được quảng cáo công khai và nó có thể được sử dụng bởi bất cứ ai tạo ra một thể hiện của lớp. Kịch bản lý tưởng sẽ là ngà này sẽ không thể nhìn thấy ở tất cả bên ngoài của việc thực hiện lớp.
OK, tôi sẽ xem xét điều này. Tôi đang làm một số công việc với thuật toán di truyền và mạng thần kinh. Các lớp học kết thúc với đống các biến cần thiết trong nội bộ. Rất ít trong số này thực sự cần tầm nhìn ở cấp độ tập tin tiêu đề. Ví dụ đầu tiên của bạn về tệp triển khai cho iOS4 + (vì bạn không khai báo int privateInt; trước câu lệnh @property)? –
@Martin Tôi không chắc chắn khi Mục tiêu-C 2.0, cho phép tạo tự động các biến thể hiện sao lưu, đã có sẵn cho iOS. –
@Martin [Trang này trên trang web của Apple] (http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtVersionsPlatforms.html%23//apple_ref/doc/uid/ TP40008048-CH106-SW1) không liệt kê một phiên bản iOS cụ thể. –