2011-07-21 6 views
0

通じアイバーズの割り当て:のiOS - このインスタンス変数を考慮する性質

UILabel *label; 

、以下の特性:

@property (nonatomic,retain) UILabel *label; 

し、次のsynthesize:

@synthesize label; 

が割り当て以下これらをです正しい(正しいメモリ管理に関して):

// 1 
UILabel *tmpLabel = [[UILabel alloc] initWithFrame:CGSizeZero]; 
self.label = tmpLabel; 
[tmpLabel release]; 

// 2 
self.label = [[[UILabel alloc] initWithFrame:CGSizeZero] autorelease]; 

// 3 - This one looks shady but I haven't gotten any leaks (I suppose this will 
// not use the created setter) 
label = [[UILabel alloc] initWithFrame:CGSizeZero]; 

- (void)viewDidUnload { 
    self.label = nil; 
    [super viewDidUnload]; 
} 

- (void)dealloc { 
    [label release]; 
    [super dealloc]; 
} 

答えて

0

すべては正しいです。注意すべき点は、-viewDidUnloadでlabelを解放すると、viewWillLoadでラベルを再作成する必要があることです。あなたは3番のセッターがセッターを通過しないという点でも正しいです。

関連する問題