这个if-sentence如何触发?

时间:2011-08-10 13:27:16

标签: iphone objective-c xcode ipad xcode4

变量fullscreenController是零,但也不是零?

编辑:调试器和控制台打印都说变量是nil,但if语句仍然被触发。

Code

Console log

3 个答案:

答案 0 :(得分:4)

在单线程应用程序中不可能;但是,在一个写得很多的多线程应用程序中,我想当你到达那部分代码时它可能是零。但我怀疑这是一个剪切和粘贴的错误,或者只是一个不思考的例子。

答案 1 :(得分:0)

虽然不太可能,但另一个可能的原因是归零弱引用。如果您的本地线程仅包含对fullscreenController的弱引用,并且释放了最后一个强引用,则所有归零的弱引用都将变为零。在if测试和分支机构代码之间可能发生这种情况。

由于ZWR在自动引用计数代码中很常见,因此在iOS 5和Lion中这类问题会变得更加规律 - 至少在人们确切知道如何使用ARC之前。

答案 2 :(得分:0)

尝试清理所有内容并重建。可能是源代码与可执行文件不一致。

此外,请确保您没有尝试调试发布版本。有时,发布版本的优化会混淆调试器中的源视图。