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 關注
- 857 瀏覽
添加回答
舉報