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/

10-10 06:57