3 回答
TA贡献1842条经验 获得超21个赞
通常会添加一个附加@interface类来定义包含私有方法的类别:
人.h:
@interface Person
{
NSString *_name;
}
@property(readwrite, copy) NSString *name;
-(NSString*)makeSmallTalkWith:(Person*)person;
@end
人.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
“私人类别”(无名类别的专有名称不是“私人类别”,它是“类扩展”)。.m防止编译器警告已定义方法。但是,由于@interface.m文件中的。是一个类别,因此无法在其中定义ivars。
12年8月6日更新:自编写此答案以来,Objective-C不断发展:
ivars 可以在类扩展中声明(并且总是可以-答案不正确)
@synthesize 不需要
ivars现在可以在大括号顶部声明@implementation:
那是,
@implementation {
id _ivarInImplmentation;
}
//methods
@end
- 3 回答
- 0 关注
- 816 浏览
添加回答
举报