2012-10-15 64 views
0

我有uibutton作爲屬性並在dealloc中釋放它。我只是用它來隱藏或取消隱藏,但其使用頻率相當高。下面的代碼中是否有內存泄漏?

@property (retain, nonatomic) IBOutlet UIButton *object; 

-(void)onsomebuttonclick 
{ 
object.hidden=true; 
} 

- (void)dealloc { 
[object release]; 
} 

- (void)viewDidUnload 
{ 
    [self setObject:nil]; 
} 

回答

3

爲什麼不只是運行

(一)靜態分析

(b)與泄漏的工具,以便

(三)使用ARC儀器?

1

這應該可以正常工作。注意,你應該設置self.object = nil;而不是釋放它以防止意外使用釋放的對象。

+0

因爲它有一個IBOutlet我們可以假設這是一個UIViewController。如果不釋放viewDidLoad中的屬性,它可能會在下次調用viewDidLoad時泄漏。 – deanWombourne

+0

當屬性設置爲新值時,retain屬性告訴它釋放,所以應該沒問題。 –

+0

不建議在'dealloc'中調用setter - 如果另一個對象正在使用KVO觀察該屬性並嘗試使用現在是半分身的對象,該怎麼辦?而且我們不知道自定義制定者是否還有其他副作用。 – deanWombourne