局部变量分配与直接分配; 属性和记忆

typ*_*ror 2 memory-management objective-c

在objective-c中,我看到很多示例代码,其中作者分配局部变量,将其分配给属性,然后释放局部变量.这样做是否有实际原因?我一直只是直接分配给该物业.这会以任何方式导致内存泄漏吗?我想我想知道这是否有任何区别:

HomeScreenBtns *localHomeScreenBtns = [[HomeScreenBtns alloc] init];
self.homeScreenBtns = localHomeScreenBtns;
[localHomeScreenBtns release];
Run Code Online (Sandbox Code Playgroud)

还有这个:

self.homeScreenBtns = [[HomeScreenBtns alloc] init];
Run Code Online (Sandbox Code Playgroud)

假设homeScreenBtns是这样的属性:

@property (nonatomic, retain) HomeScreenBtns *homeScreenBtns;
Run Code Online (Sandbox Code Playgroud)

我正准备将我的应用程序提交到应用程序商店,因此我处于完全优化/ QA模式.

bbu*_*bum 5

Assuming:

@property (nonatomic,retain) HomeScreenBtns *homeScreenBtns;
Run Code Online (Sandbox Code Playgroud)
  1. HomeScreenBtns*localHomeScreenBtns = [[HomeScreenBtns alloc] init];
  2. self.homeScreenBtns = localHomeScreenBtns;
  3. [localHomeScreenBtns release];

Then (1) implies a retain. (2) implies a second retain because the property says so. (3) releases the retain in the local scope created by (1).

If you don't do (3), you'll leak eventually.

这些都记录在内存管理指南中.