我剛剛開始瞭解如何在iOS中正確釋放內存管理對象。我最大的問題是基於下面的代碼。爲什麼這是一個對象的合法發佈? (iOS內存管理)
- (void)viewDidLoad {
[super viewDidLoad];
self.title = @"My View Controller";
UIBarButtonItem *item = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemAdd
target:self
action:@selector(doSomething)];
self.navigationItem.rightBarButtonItem = item;
[item release];
}
好的,我看到UIBarButtonItem已經創建(alloc)。現在,它被設置爲rightBarButtonItem
財產下面一行:
self.navigationItem.rightBarButtonItem = item;
直接將此行後,該項目得到釋放。
[item release];
我認爲該項目被複制到rightBarButtonItem,但我怎麼能知道發生這種情況。如果它通過引用傳遞,我會有一個問題不是嗎?有人可以澄清這裏發生了什麼,爲什麼釋放物體是合法的?非常感謝。
在那裏你開始不啓動。從[自動引用計數]開始(http://clang.llvm.org/docs/AutomaticReferenceCounting.html)。我建議您查看ARC上的Apple文檔,如果您有權訪問它,儘管該鏈接會提供所有詳細信息。 –
怎麼回事?我實際上認爲顯式的內存管理對我的學習非常有用。 – Ryan
因爲Objective-C對象的顯式內存管理已經過時。你花時間研究轉移到ARC的問題。 ARC帶來了不同的問題,而這些就是你應該問的問題。 –