"unrecognized selector sent to instance"
中的Xcode
是什么意思?
答案 0 :(得分:17)
这意味着,方法没有定义,或者在另一方面,在错误的对象上调用方法。
选择器调用中缺少“:”的错误的典型示例。
UIBarButtonItem *doneBtn = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self
action:@selector(DatePickerDoneClick)];
下面,
action:@selector(DatePickerDoneClick:)
预计而不是
action:@selector(DatePickerDoneClick)
答案 1 :(得分:6)
在我的情况下,这意味着我不理解(两天)处理程序(选择器,函数)的一个非常简单的要求: 我在我的选择器(功能)中放弃了...... :( NSNotification *)通知 ....
最后它只是一个self.stupidMistake(或者在尝试理解iOs / xCode中的新东西时编程很累)。我在apple阅读了文档,我在stackoverflow上阅读了很多很多文章,并从搜索结果中读取了各种其他页面,并且只是忽略了我的事实: 在viewDidLoad中:
[[NSNotificationCenter defaultCenter] addOberserver:self selector:@selector(myHandler:) name:@"UIApplicationWillResignActiveNotification" object:nil];
在我发明的.h(声明)和.m(真实代码)中:
-(void)myHandler { ... }
这会在运行时生成无法识别的选择器发送到实例(崩溃和调试输出)(xcode中没有错误或警告)。然后我花了差不多两天时间试图找出错误,错误是:
-(void)myHandler:(NSNotification*)notification { ... }
希望它可以帮助其他人卡住 - 它是一种语法事物(您的选择器或处理程序或函数或任何您想要的名称)必须将(NSNotification *)'对象'作为参数你是否使用它;和xcode(4.2 w / iOs SDK 5.0)不会产生任何有关此“错误”的错误或警告。
答案 2 :(得分:6)
如果您在故事板上删除并重新创建了按钮,则可以将按钮链接到两种不同的方法:旧(已删除)和新(新)。这种情况多次发生在我身上。
修复: 1)在XCode / IB中,查看故事板。 2)单击导致异常的按钮。 3)在最右侧的面板上,单击“'连接器”。图标。 (截至2015年4月的一个带箭头的圆圈)。 4)假设您已链接到操作" Touch Up Inside",请确保仅链接一个方法。每个旁边都会出现[x],所以如果有两个,则杀死不再存在的那个。
答案 3 :(得分:5)
这意味着您已经在不支持该方法的对象上调用了一个方法。
它说'无法识别的选择器'的原因是方法调用是由消息发送机制实现的。包含方法名称的消息部分称为选择器。
答案 4 :(得分:4)
我认为这个错误是由于在类中调用了一个未在类中声明的函数。
答案 5 :(得分:2)
我认为当你在不属于这个实例的方法实例上调用选择器时。 也许我错了我不确定,因为我在xcode中编码任何东西已经有一段时间了。
答案 6 :(得分:1)
对我而言,只是Xcode
无需编译代码。 Apple显然认为iOS开发不够复杂,因此他们必须在IDE中构建额外的瑕疵。
我被告知SHIFT+COMMAND+K
清理构建可能是一个很大的帮助。
答案 7 :(得分:0)
由于没有将自定义类分配给Interface Builder中的视图,我收到了此错误。
NSArray *subviewArray = [[NSBundle mainBundle] loadNibNamed:@"EventsFilterView" owner:self options:nil];
self.filters = [subviewArray objectAtIndex:0];
变量self.filters
已分配给EventFilterView
类,但xib文件中的实际视图不是。
希望这有助于某人。
答案 8 :(得分:0)
出现这种情况的原因有以下几种:
ONE:该方法在.h中声明,但在.m中不存在。编译器没有抱怨,但在执行期间你面临崩溃。请检查出来:
TWO:如果您正在调用委托方法,请检查此方法是否真正实现。
我在修改签名时使用此错误,但我忘记更新实现文件上的签名方法.m
答案 9 :(得分:0)
我有一个类似的问题,问题是我的“.m”类包含未知的选择器不在“构建阶段/编译源”列表中。 我添加了它,一切都修复了。