Người ta thường đặt một bổ sung @interface
xác định một danh mục chứa các phương thức riêng tư:
Person.h:
@interface Person
{
NSString *_name;
}
@property(readwrite, copy) NSString *name;
-(NSString*)makeSmallTalkWith:(Person*)person;
@end
Person.m:
@interface Person () //Not specifying a name for the category makes compiler checks that these methods are implemented.
-(void)startThinkOfWhatToHaveForDinner;
@end
@implementation Person
@synthesize name = _name;
-(NSString*)makeSmallTalkWith:(Person*)person
{
[self startThinkOfWhatToHaveForDinner];
return @"How's your day?";
}
-(void)startThinkOfWhatToHaveForDinner
{
}
@end
'Danh mục riêng tư' (tên riêng của danh mục không tên không phải là 'danh mục riêng tư', nó là 'phần mở rộng lớp') .m ngăn trình biên dịch cảnh báo rằng các phương thức đã được xác định. Tuy nhiên, vì @interface
tệp trong tệp .m là một danh mục nên bạn không thể xác định các ivars trong đó.
Cập nhật ngày 6 tháng 8 năm '12: Objective-C đã phát triển kể từ khi câu trả lời này được viết:
ivars
có thể được khai báo trong phần mở rộng lớp (và luôn luôn có thể - câu trả lời không chính xác)
@synthesize
không được yêu cầu
ivars
bây giờ có thể được khai báo trong dấu ngoặc nhọn ở đầu @implementation
:
đó là,
@implementation {
id _ivarInImplmentation;
}
@end
@interface Person ()
sẽ đủ.