1

我在我的应用程序中使用了 Objective-C,我对 @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 中,这样我就不必多次声明它了?

谢谢!

4

1 回答 1

5
  1. ObjC 没有多重继承。
  2. 您不希望SEL在同一个类中有多个相同的定义。
  3. 您可以声明(并采用)协议。然后您将在声明采用的方法中定义方法 ( loadImage:) 。@interface您也可以在虚拟类别中声明它,然后loadImage:在另一个@implementation范围内定义。
  4. 对此的替代方法是组合——基本上,您将向您的类添加一个类或协议实例变量并让它执行工作。如果这是公共接口,那么您还可以为其提供访问器,或者您可以根据需要包装它。如果您的 50 个方法@interface可以在逻辑上进行细分,那么这是值得考虑的。
于 2012-04-04T02:37:11.823 回答