2011-10-12 28 views
5

Tôi đã nhận thấy một loạt các khai báo @interface cho các lớp Objective-c. Tôi muốn hiểu tại sao các nhà phát triển tuyên bố @interface theo các cách sau:Các loại khai báo @interface, một số có dấu ngoặc đơn

// in the .h file 
@interface MyClass : NSObject 
// ... 
@end 

// in the .m file (what's the purpose of the parens?) 
@interface MyClass() 
// more property declarations which seem like they can go in the .h file 
@end 

// again in the .m file (what's the purpose of private?) 
@interface MyClass (Private) 
// some method declarations 
@end 
+1

Ví dụ: [tìm kiếm nhanh] (http://stackoverflow.com/search?q=%5Bobjc%5D+%40interface+parentheses&submit=search) lần lượt lên http : //stackoverflow.com/questions/7378479/what-does-the-text-inside-parentheses-in-interface-and-implementation-directive –

+1

Còn xem xét [spec ngôn ngữ] (http://developer.apple .com/library/mac/documentation/Ca cao/Khái niệm/Mục tiêuC/Chương/ocDefiningClasses.html # // apple_ref/doc/uid/TP30001163-CH12-SW1)? –

Trả lời

5

Đây chỉ là một bình thường class interface, kế thừa từ NSObject, nơi bạn khai báo ivars, tài sản và phương pháp

// in the .h file 
@interface MyClass : NSObject 
// ... 
@end 

Sau đây hai là categories, cho phép bạn thêm các phương pháp để một lớp. Tuy nhiên, đây không phải là một phân lớp (không khai báo một phương thức có cùng tên, vì bạn sẽ không thể truy cập vào phương thức gốc). Nếu bạn có một thể loại được đặt tên của giao diện (như @interface MyClass (Private)), thì việc triển khai sẽ được cung cấp trong @implementation MyClass (Private), trong trường hợp các danh mục chưa được đặt tên (còn gọi là tiện ích mở rộng), việc triển khai có thể được cung cấp như bình thường. Lưu ý rằng phần mở rộng cũng cho phép bạn thêm ivars vào lớp trong khi (tên) loại không.

// in the .m file (what's the purpose of the parens?) 
@interface MyClass() 
// more property declarations which seem like they can go in the .h file 
@end 

// again in the .m file (what's the purpose of private?) 
@interface MyClass (Private) 
// some method declarations 
@end 
+1

Có thể _currently_ để thêm bộ nhớ vào một lớp trong phần mở rộng. Nó không bao giờ có thể làm như vậy thông qua một thể loại. –

-1

gì bao giờ đi trong file .m là tư nhân. các parens là dành cho các danh mục để bạn có thể phân đoạn mã của mình thành các danh mục để làm cho nó dễ đọc hơn. vì mã nằm trong số .m và riêng tư, chúng được gọi là danh mục Riêng tư.

Các vấn đề liên quan