2012-04-04 70 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 2012-04-04 02:33:51

+0

中沒有多重繼承所以對此絕對沒有解決方法?如果我喜歡50種同樣的方法呢?這是非常乏味和無組織的。 – 2012-04-04 02:37:28

回答

5
  1. ObjC沒有多重繼承。
  2. 你不想同一SEL同一類中的多個定義。
  3. 你可以聲明(並通過)一個協議。那麼您將在聲明採用的@interface中定義方法(loadImage:)。您也可以將其聲明爲虛擬類別,然後在另一個@implementation範圍內定義loadImage:
  4. 對此的一種替代方案是組合 - 基本上,您可以將類或協議實例變量添加到您的類中並讓它執行工作。如果這是公共接口,那麼你也可以提供一個訪問者,或者你可以根據需要包裝它。這是值得考慮的,如果你的50個方法每@interface可以在邏輯上細分。