문제

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
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top