通常会添加一个附加@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