문제
nsxmlnode와 같은 클래스에 카테고리 메소드를 추가하는 경우 :
@interface NSXMLNode (mycat)
- (void)myFunc;
@end
이 범주 방법은 NSXMLELEMENT 및 NSXMLDOCUMUTE와 같은 NSXMLNODE의 서브 클래스로도 사용할 수 있습니까? 아니면 각 클래스에서 메소드를 카테고리로 정의하고 구현해야합니까? 코드 복제로 이어집니다.
해결책
서브 클래스로 제공됩니다!
다른 팁
Yuji가 말한대로 서브 클래스로 제공 될 예정입니다.
그러나, 당신은 그것이 공공 또는 개인 방법과 충돌 할 위험이 없도록 방법을 접두사해야합니다.
즉:
-(void) mycat_myMethod;
예, 사용할 수 있습니다. 코드로 확인하고 여기에 다음과 같습니다.
#import <Foundation/Foundation.h>
@interface Cat1 : NSObject {
}
@end
@implementation Cat1
- (void) simpleMethod
{
NSLog(@"Simple Method");
}
@end
@interface Cat1 (Cat2)
- (void) addingMoreMethods;
@end
@implementation Cat1 (Cat2)
- (void) addingMoreMethods
{
NSLog(@"Another Method");
}
@end
@interface MYClass : Cat1
@end
@implementation MYClass
@end
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
MYClass *myclass = [[MYClass alloc] init];
[myclass addingMoreMethods];
[myclass release];
[pool drain];
return 0;
}
출력은 다음과 같습니다.
Another Method
제휴하지 않습니다 StackOverflow