0

我创建了一个静态库,用于我的其他 iOS 应用程序项目。它的工作方式是应用程序项目在我的静态库中实现协议并调用静态库中的方法。然后静态库在调用视图之上呈现一个视图。代码如下:

委托中主类的 MyFile.h 文件:

@protocol MyHandlerDelegate <NSObject>

     - (void)infoRetrieved:(BOOL)success;

@end

@interface MyFile : UIViewController
{
    id <MyHandlerDelegate> delegate;
}

@property (retain) id delegate;

MyFile.m 包含:

- (void)showRewards
{
    [[[self delegate] view] addSubview:view1];
}

现在,当我只用一个按钮创建一个虚拟应用程序时,它工作得很好,静态库成功地在调用视图的顶部呈现了一个视图。现在我需要在一个开源游戏 TweetJump(基于 Cocos2D 构建)中完成这项工作。在高分类中,我包含了头文件并实现了委托。在实现文件中,我调用以下代码:

MyFile *mf = [[MyFile alloc] init];
[mf setDelegate:self];
[mf showRewards];

为了您的考虑,我主持了 Highscore 课程 - HeaderImplementation。执行上述方法时出现的错误是:

2013-04-16 23:54:42.658 tweejump[11502:c07] +[Highscore view]: unrecognized selector sent to class 0xecc08 2013-04-16 23:54:42.661 tweejump[11502:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+[Highscore view]: unrecognized selector sent to class 0xecc08'

我知道这是一个乏味的问题。将非常感谢您的帮助。谢谢

4

2 回答 2

1

它告诉你 Highscore 类没有视图方法。你的协议说委托只需要是一个 NSObject 没有更具体的。

于 2013-04-16T23:22:15.413 回答
0

看起来您是在类方法而不是实例方法中调用此代码。对象不能与其类互换。让您的实际 Highscore 对象而不是类来执行此操作。

于 2013-04-16T23:23:52.173 回答