我希望有人能幫助解決這個問題。IOS 6發送到實例的ARC無法識別的選擇器
我有一個UITableViewController,並希望將一個值傳遞給一個名爲NewsArticleViewController的UIViewController,當tablecell被選中時。我已經從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,我不知道這是否是特定的原因,但我不能繼續下去,直到我解決這個問題。謝謝。
你確定destinationViewController正在返回一個NewsArticleViewController嗎? – combinatorial
在調試器命令提示符(它表示lldb或gdb)中輸入以下「po [0x8088140 class]並回車。除了用錯誤字符串」無法識別的選擇器發送到「末尾的任何指針代替0x8088140實例0x8088140'。讓我知道有什麼類。我的猜測是目標視圖控制器實際上並不是一個NewsArticleViewController實例 – Bergasms
它可能是一個UINavigationController而不是一個NewsArticleViewController。 –