self.flipsidenavigationbar=aNavigationBar;
为什么这里需要自我? (否则会崩溃)
[flipsidenavigationbar pushnavigationietm........];
为什么这里不需要自我?
请注意,flipsidenavigationbar是一个声明为property并合成的iVar。
谢谢
亚历克斯
最佳答案
是flipsidenavigationbar
声明为“保留”属性类型?我对发生的事情的猜测是。
您编写的点语法方法等效于
[self setFlipsidenavigationbar:aNavigationBar];
并且此方法调用可能会在设置它时保留
aNavigationBar
对象。您打电话的时候flipsidenavigationbar = aNavigationBar;
您没有保留它,它很可能在您想要它被释放并导致崩溃之前被释放了。
您可以在Obj-C中阅读有关dot syntax的更多信息,将来可能会帮助您解决此类问题。
其他两个张贴者说的更好,但是记住以下两行非常重要:
self.myViewA = myViewB;
myViewA = myViewB;
有可能完全无关。点语法仅是方法调用的简写,并且有可能使该方法调用执行您想要的任何事情。重要的是,不要有规则来处理评论中提到的属性
您应该确切了解正在发生的事情,因此您知道点语法用法的影响。我知道这很令人困惑,但实际上并不难,而且每个人都很快将其掌握。祝好运!
关于objective-c - 点语法问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2342097/