IOS 6 ARC无法识别的选择器发送到实例

时间:2012-12-11 23:27:22

标签: ios automatic-ref-counting xcode4.5

我希望有人可以帮忙解决这个问题。

我有一个UITableViewController,想要在选择tablecell时将值传递给名为NewsArticleViewController的UIViewController。我已经从tablecell创建了一个segue到视图控制器。

当我调用下面的prepareForSegue方法时:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if([[segue identifier] isEqualToString:@"ShowNewsArticle"])
    {
        NSIndexPath *indexPath = [self._tableView indexPathForSelectedRow];
        NSDictionary *article = [_articles objectAtIndex:indexPath.row];
        NSString *articleID = [article valueForKey:@"id"];
        NSLog(@"Trying %@", articleID);

        NewsArticleViewController *detailViewController = [segue destinationViewController];
        detailViewController.articleID = articleID;
    }
}

NSLog在最后一行发生错误之前正确显示NSString值。

我收到错误:

2012-12-11 23:08:41.915 My School[4689:c07] -[UIViewController setArticleID:]: unrecognized selector sent to instance 0x8088140
2012-12-11 23:08:41.916 My School[4689:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIViewController setArticleID:]: unrecognized selector sent to instance 0x8088140'
*** First throw call stack:
(0x1800012 0x11c5e7e 0x188b4bd 0x17efbbc 0x17ef94e 0x3ca1 0x554ac7 0x554b54 0x1bc899 0x1bcb3d 0xbc3e83 0x17bf376 0x17bee06 0x17a6a82 0x17a5f44 0x17a5e1b 0x1cc87e3 0x1cc8668 0x10d65c 0x1f4d 0x1e75 0x1)
libc++abi.dylib: terminate called throwing an exception

在目标视图控制器NewsArticleViewController上,我在标题中声明了这一点:

@property(strong,nonatomic) id articleID;

我已经在方法中合成了属性。我正在使用ARC,我不知道这是否是具体的原因但我不能继续,直到我解决这个问题。感谢。

1 个答案:

答案 0 :(得分:2)

在错误消息中,UIViewController报告“无法识别的选择器”错误。我怀疑您的故事板没有为此场景指定自定义NewsArticleViewController。因此,它使用的默认UIViewController显然无法理解setArticleID

在Interface Builder中检查视图控制器的“自定义类”设置:

enter image description here

如果未指定自定义类,则它将类似于上面的屏幕快照。只需填写班级名称。