目标c中的重点是什么?

mk1*_*k12 2 iphone properties objective-c object-initialization

SomeObject *temp = [[SomeObject alloc] init]
self.theObject = temp;
[temp release];
Run Code Online (Sandbox Code Playgroud)

为什么总是这样做?为什么不

self.theObject = [[SomeObject alloc] init];
Run Code Online (Sandbox Code Playgroud)

Joh*_*eek 11

如果theObject属性是保留属性,第一种方法是正确的,因为它不会泄漏内存.它比写第二个版本的正确方法更有效,这是:

self.theObject = [[[SomeObject alloc] init] autorelease];
Run Code Online (Sandbox Code Playgroud)

每当你创建一个对象,alloc你负责以某种方式释放它,无论是通过release还是autorelease.

  • 从技术上讲,它是创建对象的alloc,因此需要一个release而不是init. (4认同)