如何检查self.navigationController是否为nil

时间:2010-09-18 01:09:39

标签: cocoa cocoa-touch xcode gdb debugging

在下面的代码中,我可以使用调试器检查self和childView的值。

[self.navigationController pushViewController:childView animated:YES];

但是,我无法看到self.navigationController的值。我怎样才能检查它是否为零?

3 个答案:

答案 0 :(得分:2)

只需添加以下行:

UINavigationController* navController = self.navigationController;

然后设置一个断点,或者你想要做的其他事情。

答案 1 :(得分:2)

原因是因为navigationController是一个属性,所以你不能只检查它;你必须向财产所有者发送一个getter消息。在调试器中,这是非常昂贵的,特别是如果它崩溃或以其他方式失败,加上它可能总是有副作用(例如,在Core Data对象中出现错误,延迟加载某些东西,或者在另一个ivar中更改某些状态),因此调试器不会随便这样做。

您必须使用调试器控制台显式请求消息:

po [self navigationController]

(我不知道它是否会让你在那里使用属性访问语法。它们之间没有区别,这是问题的根源:属性访问一个Objective-C消息,正如我上面所描述的那样,除非你明确告诉它,否则调试器不会执行此操作。)

答案 2 :(得分:1)

您可以随时执行(self.navigationController == nil)

之类的操作