@interface
개인 메서드를 포함하는 범주를 정의 하는 추가를 넣는 것이 일반적입니다 .
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
'private category'(이름없는 카테고리의 적절한 이름은 'private category'가 아니라 'class extension') .m은 컴파일러가 메서드가 정의되었다는 경고를 방지합니다. 그러나 @interface
.m 파일의는 범주 이기 때문에 ivars를 정의 할 수 없습니다.
업데이트 6th Aug '12 : Objective-C는이 답변이 작성된 이후로 발전했습니다.
ivars
클래스 확장에서 선언 될 수 있습니다 (항상 가능-대답이 잘못됨)
@synthesize
필요하지 않습니다
ivars
이제 상단의 중괄호로 선언 할 수 있습니다 @implementation
.
그건,
@implementation {
id _ivarInImplmentation;
}
@end
@interface Person ()
충분합니다.