Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

In objective-c I see a lot of sample code where the author assigns a local variable, assigns it to a property, then releases the local variable. Is there a practical reason for doing this? I've been just assigning directly to the property for the most part. Would that cause a memory leak in any way? I guess I'd like to know if there's any difference between this:

HomeScreenBtns *localHomeScreenBtns = [[HomeScreenBtns alloc] init];
self.homeScreenBtns = localHomeScreenBtns;
[localHomeScreenBtns release];

and this:

self.homeScreenBtns = [[HomeScreenBtns alloc] init];

Assuming that homeScreenBtns is a property like so:

@property (nonatomic, retain) HomeScreenBtns *homeScreenBtns;

I'm getting ready to submit my application to the app store so I'm in full optimize/QA mode.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
1.8k views
Welcome To Ask or Share your Answers For Others

1 Answer

Assuming:

@property (nonatomic,retain) HomeScreenBtns *homeScreenBtns;
  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.

This is all documented in the memory management guide.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...