我创建了一个静态库供其他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构建)中进行这项工作。在highscores类中,我包括了头文件并实现了委托。在实现文件中,我调用以下代码:

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 0xecc082013-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'

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

最佳答案

它告诉您Highscore类没有视图方法。您的协议说,委托只需要是一个NSObject就可以了。

关于ios - 无法识别的实例已发送至-代表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16048842/

10-10 09:45