我在頭定義文件中的對象的對象:的Objective-C,正確釋放
@property (nonatomic, retain) UIBarButtonItem *printButton;
在實現文件:
@synthesize printButton;
self.printButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:@selector(printWebPage:)];
[self.view addSubview:printButton];
[printButton release]; // Should I release it here?
- (void)dealloc
{
[printButton release];
[super dealloc];
}
我的問題是,我應該總是release/autorelease
對象(宣佈爲保留屬性)之後I addSubview
它,並且在dealloc中釋放它,即使我將在其他函數中使用它!
Downvoter請解釋...它的易於投票而沒有解釋。如果您認爲答案不正確,歡迎您對其進行編輯或張貼自己的答案。 – giorashc 2013-03-23 19:13:11
我不是downvoter,但內存管理的細節並不像你的答案所表明的那麼簡單。你只應該釋放一個擁有引用的對象,這意味着你既可以保留它,也可以通過'new','copy','mutableCopy'或'init'方法獲得它。同樣,在OP的例子中,他們可以在將'printButton'分配給'self.printButton'之後立即釋放'printButton',因爲@property負責維護對它的強大(保留)引用。 – 2013-03-23 19:14:37
@AndrewMadsen謝謝你,所以,即使我將在其他函數中使用它,也應該釋放它,導致self.printButton將照顧保留它?! – 2013-03-23 19:21:53