这是什么意思"unrecognized selector sent to instance"的Xcode?
小智 17
这意味着,方法没有定义,或者在另一方面,在错误的对象上调用方法.
选择器调用中缺少":"的错误的典型示例.
UIBarButtonItem *doneBtn = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self
action:@selector(DatePickerDoneClick)];
Run Code Online (Sandbox Code Playgroud)
这里,
action:@selector(DatePickerDoneClick:)
Run Code Online (Sandbox Code Playgroud)
是预期而不是
action:@selector(DatePickerDoneClick)
Run Code Online (Sandbox Code Playgroud)
小智 9
如果您已经在故事板上删除并重新创建了按钮,则可以将按钮链接到两种不同的方法:旧(已删除)和新(新).这种情况多次发生在我身上.
要修复:1)在XCode/IB中,查看故事板.2)单击导致异常的按钮.3)在最右侧面板上,单击"连接器"图标.(截至2015年4月的一个带箭头的圆圈).4)假设您正在链接到"Touch Up Inside"动作,请确保仅链接一个方法.每个旁边都会出现[x],所以如果有两个,则杀死不再存在的那个.
小智 6
在我的情况下,这意味着我不理解(两天)一个非常简单的处理程序要求(选择器,函数):我在我的选择器(函数)中放弃了... :(NSNotification*)通知 ... .
最后它只是一个self.stupidMistake(或者在尝试理解iOs/xCode中的新东西时编程很累).我在apple阅读了文档,我在stackoverflow上阅读了很多很多文章,并从搜索结果中读取了各种其他页面,并且只是忽略了我的事实:在viewDidLoad中:
[[NSNotificationCenter defaultCenter] addOberserver:self selector:@selector(myHandler:) name:@"UIApplicationWillResignActiveNotification" object:nil];
Run Code Online (Sandbox Code Playgroud)
在我发明的.h(声明)和.m(真实代码)中:
-(void)myHandler { ... }
Run Code Online (Sandbox Code Playgroud)
这会在运行时生成无法识别的选择器(崩溃和调试输出)(xcode中没有错误或警告).然后我花了差不多两天时间试图弄清楚错误,错误是:
-(void)myHandler:(NSNotification*)notification { ... }
Run Code Online (Sandbox Code Playgroud)
希望它可以帮助其他人卡住 - 这是一个语法事物(你的选择器或处理程序或函数或任何你想要调用的东西)必须将(NSNotification*)'对象'作为参数,无论你是否使用它; 和xcode(4.2 w/iOs SDK 5.0)不会产生任何有关此"错误"的错误或警告.
| 归档时间: |
|
| 查看次数: |
36939 次 |
| 最近记录: |