2012-04-04 2 views
1

내 앱에서 Objective-C를 사용하고 있는데 @interface 선언에서 다중 상속에 대한 질문이 있습니다.@interface 다중 상속?

거의이 내 .H 지금 모습입니다 : 당신이 볼 수있는

#import "cocos2d.h" 

    @interface UIViewController (Save) 

    - (void)saveImage:(UIImage*)image:(NSString*)imageName; 
    - (void)removeImage:(NSString*)fileName; 
    - (UIImage*)loadImage:(NSString*)imageName; 

    @end 

    @interface CCLayer (Save) 
    - (UIImage*)loadImage:(NSString*)imageName; 
    - (BOOL)checkExists:(NSString*)thePath; 
    @end 

그래서, 내가 두 번 loadImage 방법을 선언했다. 나는 이것을 원하지 않는다. 이것은 동일한 방법으로 두 번 동일한 코드를 내 .m에 두어야한다는 것을 의미합니다.

여러 번 선언 할 필요가 없도록 UIViewController와 CCLayer를 1 개의 @interface에 혼합 할 수있는 방법이 있습니까?

감사합니다.

+3

Objective-C – sidyll

+0

에는 다중 상속이 없으므로 이에 대한 해결 방법은 없습니다. 같은 것을 50 가지 방법으로 사용했다면 어떨까요? 그것은 지루하고 조직화되지 않은 것입니다. –

답변

5
  1. ObjC에는 다중 상속이 없습니다.
  2. 동일한 클래스의 동일한 SEL의 여러 정의를 원하지 않습니다.
  3. 프로토콜을 선언 (채택) 할 수 있습니다. 채택을 선언 한 @interface에 메서드 (loadImage:)를 정의합니다. 더미 카테고리에서 선언 한 다음 다른 범위에 loadImage:을 정의 할 수 있습니다.
  4. 대안 - 기본적으로 클래스 또는 프로토콜 인스턴스 변수를 클래스에 추가하고 작업을 수행하게하십시오. 이것이 음모 인터페이스라면, 접근자를 제공 할 수도 있고 필요에 따라 감싸 줄 수도 있습니다. @interface 당 50 가지 방법을 논리적으로 세분화 할 수 있다면이 점을 고려해야합니다.