如何调试“发送到实例的未识别选择器”错误

如何调试“发送到实例的未识别选择器”错误

我正在为我的表视图创建一个自定义表格单元格视图。在将自定义单元格的图像视图(在故事板中)连接到我的代码后,我会得到以下错误。


[UITableViewCellContentView image]: unrecognized selector sent to instance 0x7fb4fad7fd20'

*** First throw call stack:

(

    0   CoreFoundation                      0x000000010ccbb3f5 __exceptionPreprocess + 165

    1   libobjc.A.dylib                     0x000000010e7e9bb7 objc_exception_throw + 45

    2   CoreFoundation                      0x000000010ccc250d -[NSObject(NSObject) doesNotRecognizeSelector:] + 205

    3   CoreFoundation                      0x000000010cc1a7fc ___forwarding___ + 988

    4   CoreFoundation                      0x000000010cc1a398 _CF_forwarding_prep_0 + 120

    5   UIKit                               0x000000010d7d8881 -[UITableViewCell _marginWidth] + 151

    6   UIKit                               0x000000010d7ca23d -[UITableViewCell _separatorFrame] + 70

    7   UIKit                               0x000000010d7ca6fa -[UITableViewCell _updateSeparatorContent] + 360

    8   UIKit                               0x000000010d7d4e85 -[UITableViewCell _setSectionLocation:animated:forceBackgroundSetup:] + 1174

    9   UIKit                               0x000000010d634ea8 __53-[UITableView _configureCellForDisplay:forIndexPath:]_block_invoke + 1822

)

你能告诉我如何解决这个错误吗?


谢谢。


我在我的项目中添加了一个异常断点。


这就是它断裂的地方。


  override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

        let cell = self.tableView.dequeueReusableCellWithIdentifier(kCellIdentifier) as ItemTableViewCell  <---------------

但我的代码中没有使用“图像”。


慕妹3146593
浏览 344回答 3
3回答

天涯尽头无女友

尝试将符号断点设置为-[NSObject(NSObject) doesNotRecognizeSelector:]..只要点击[+]在断点导航器的左下角添加一个断点。然后单击“添加符号断点”。现在再现您的崩溃应该会让您更好地了解代码中的问题发生在哪里。

慕尼黑的夜晚无繁华

关键的第一步是分析错误消息:[UITableViewCellContentView&nbsp;image]:&nbsp;unrecognized&nbsp;selector&nbsp;sent&nbsp;to&nbsp;instance这告诉你“信息”image被“发送”到类UITableViewCellContentView的对象。(换句话说,有人试图调用该方法。image关于UITableViewCellContentView类的对象。)首先要问的是“这样做有意义吗?”可能是命名类具有Image方法,但不是image方法,因此调用时使用了错误的方法名。也可能是命名的方法是someMethod:someParm:,但是类实现了someMethod:someParm:anotherParm:,这意味着调用时省略了一个参数。但是,大多数情况下,命名类甚至没有任何与命名方法相似的方法,这意味着在失败的调用中使用了指向错误对象的指针。例如,可以这样做:NSArray*&nbsp;myArray&nbsp;=&nbsp;[myDictionary&nbsp;objectForKey:@"values"];NSString*&nbsp;myString&nbsp;=&nbsp;[myArray&nbsp;objectAtIndex:5];并得到一个大致如下的错误:[__NSDictionaryI&nbsp;objectAtIndex:]&nbsp;unrecognized&nbsp;selector&nbsp;sent&nbsp;to&nbsp;instance因为从myDictionary实际上,是一个NSDicary,而不是预期的NSArray。不幸的是,最令人困惑的是,这种错误发生在UI系统代码中,而不是在您自己的代码中。如果您以某种方式将错误的对象传递给系统接口,或者在InterfaceBuilder或其他地方配置了错误的类,则可能会发生这种情况。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

iOS