繁体   English   中英

目标c中的重点是什么?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM