Ios 准备在Iskindof类比较中进行segue崩溃

Ios 准备在Iskindof类比较中进行segue崩溃,ios,objective-c,segue,Ios,Objective C,Segue,我的prepare for segue呼叫一直导致崩溃,但没有任何错误消息。所以我使用NSLog来跟踪发生了什么。下一行永远不会到达 NSLog(@"The VCs matched!!: " ) 这里是方法 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { NSLog(@"enter prepare for segue."); NSIndexPath *indexPath = [self

我的prepare for segue呼叫一直导致崩溃,但没有任何错误消息。所以我使用NSLog来跟踪发生了什么。下一行永远不会到达

NSLog(@"The VCs matched!!: " )
这里是方法

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    NSLog(@"enter prepare for segue.");
    NSIndexPath *indexPath = [self.tableView indexPathForCell:sender];

    if ([segue.identifier isEqualToString:SegueIdentifierA]) {
        NSLog(@"Destination to match are: %@, %@ .",segue.destinationViewController,[PaperDetailViewController class] );
        if ([segue.destinationViewController isKindOfClass:[PaperDetailViewController class]]) {
            NSLog(@"The VCs matched!!: " );
            PaperDetailViewController *paperDetailView = (PaperDetailViewController *)segue.destinationViewController;

        }else NSLog(@"NO ONO NO match for %@ AND %@.",segue.destinationViewController,[PaperDetailViewController class] );
    }
    NSLog(@"exit prepare for segue.");

}

根据这些信息,我建议您在脚本编辑器中为视图控制器指定类


如果能看到评论中提到的堆栈跟踪,那就太好了。这将提供有价值的线索。如果没有它们,最有可能的罪魁祸首是:

NSIndexPath *indexPath = [self.tableView indexPathForCell:sender];
这是盲目地假设发送方是UITableViewCell。如果不是,您肯定会看到崩溃(我们会在堆栈跟踪中看到)。如果表格选择是触发segue的原因,那么这样更安全,更容易阅读

NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];

对不起,误报了。我的Xcode似乎有问题。Xcode刚刚崩溃,在我重新启动它之后,一切正常。感谢大家的帮助。

您能添加在调试器中看到的堆栈跟踪吗?是否到达第一个NSLog(@“要匹配的目标…”)了?设置断点并在调试器中单步执行,以确定崩溃的确切行-这会有所帮助。未到达的第一个日志行是我指定的日志行,到达之前的所有其他消息。如果没有异常消息和堆栈跟踪,我们将在黑暗中工作。在请求“崩溃”帮助时,应始终尝试提供完整的异常消息和堆栈跟踪。有时,无论出于何种原因,这都是不可能的,但在发布问题之前,你应该尽合理的努力获取这些信息。(这适用于任何语言,而不仅仅是客观语言)在我的案件中确实没有任何痕迹。没什么。如果Xcode真的崩溃了,这是可能的,但即使在那个时候也很少见。(不幸的是,在许多情况下很难提取堆栈跟踪,但了解如何提取堆栈跟踪是非常值得的。请参阅我之前发布的链接。)