谁能告诉我[self.property release]和[property release]之间的区别。我之所以这样问,是因为在我的应用程序中的一个视图控制器中,我正在执行[self.property release]并将此视图控制器推送到导航堆栈中,当我弹出此视图控制器时,它显示错误EXC_BAD_INSTRUCTION,但当我执行[property release]操作时,一切都正常...?谁能告诉我我哪里错了?我是iPhone应用程序开发的新手。
发布于 2010-07-02 18:12:52
属性释放将释放消息发送到属性实例变量,这几乎肯定是您想要做的事情。
self.property release向self.property返回的对象发送release消息。这将取决于属性是否被定义为assign / copy / retain,因此基本上您可能正在释放一个与您认为自己不同的对象。
发布于 2010-10-14 11:49:39
区别在于self.myProperty是实例变量myProperty的访问器方法。访问器方法由@synthesize生成,或者可以显式定义为
-(Type*) myProperty;
-(void) setMyProperty:(Type*)p;因此,假设您已经将访问器定义为(键是retain)
@property (retain) Type* myProperty;然后
[myProperty release];
myProperty = nil;等同于
self.myProperty = nil;通常,将释放的对象设置为零是一种好的做法,这样您就不会意外地尝试使用(或过度释放)它们。
没有充分的理由调用[self.property release]。
https://stackoverflow.com/questions/3164216
复制相似问题