[英]What's the point of this in objective-c
SomeObject *temp = [[SomeObject alloc] init]
self.theObject = temp;
[temp release];
为什么总是这样做? 为什么不
self.theObject = [[SomeObject alloc] init];
如果theObject
属性是保留属性,则第一种方法是正确的,因为它不会泄漏内存。 它比写第二个版本的正确方法更有效,这是:
self.theObject = [[[SomeObject alloc] init] autorelease];
每当你使用alloc
创建一个对象时,无论是通过release
还是autorelease
释放,你都会以某种方式释放它。
第二个版本泄漏了SomeObject实例,因为self.theObject将调用一个setter,如果写得正确,它将保留该对象。
你可以做到
theObject = [[SomeObject alloc] init];
而且有些人肯定会这样做。 其他人更喜欢总是使用访问器,无论是为了一致还是为了避免错误,如果访问器有副作用(例如,你将绕过KVO通知,如果它不是init方法的一部分,这可能是一个问题)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.