2012-04-04 19 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で同じメソッドを2回使用する必要があることを意味します。

UIViewControllerとCCLayerを1つの@interfaceに混ぜて、複数回宣言する必要はありませんか?

ありがとうございます!

+3

Objective-Cに多重継承はありません – sidyll

+0

このため、回避策はありませんか?同じことについて50の方法があったらどうなりますか?それは非常に退屈で組織化されていません。 –

答えて

5
  1. ObjCには多重継承はありません。
  2. 同じクラスの同じSELの複数の定義を必要としません。
  3. プロトコルを宣言(採用)することができます。採用を宣言した@interfaceにメソッド(loadImage:)を定義します。それをダミーカテゴリで宣言し、別の@implementationスコープにloadImage:を定義することもできます。
  4. これに代わる方法は、基本的にクラスまたはプロトコルインスタンス変数をクラスに追加して、それを実行させることです。これが陰的なインタフェースであれば、アクセサを提供することもできますし、必要に応じてラップすることもできます。 @interfaceごとに50個のメソッドを論理的に細分することができれば、これは考慮する価値があります。