看板 MacDev 關於我們 聯絡資訊
新手又來問問題了XD 以下面這個常見的寫法來說 - (void)viewDidLoad { UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd style:UIBarButtonItemStyleBordered target:self action:@"selector(add:)"]; self.navigationItem.rightBarButtonItem = addButton; [addButton release]; } 常常看到一些code的寫法是先用一個變數(addButton)建立好物件後 讓另一個變數(self.navigationItem.rightBarButtonItem)retain 再release前面宣告的變數(addButton) 為什麼不一開始就用 self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] init....]呢 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.168.34.115
Blueshiva:這樣你後面要怎麼release? 12/31 04:06
seruziu:iPhone能不能加上 [[[xx alloc] init] autorelease] ?? 12/31 07:52
Blueshiva:可以啊,只是這樣子會變得很長就是了 12/31 11:27
Gsus:兩種寫法的最後不都是由self.navigati...tem所retain嗎 12/31 12:10
Gsus:還是我有觀念錯誤的地方@@ 12/31 12:10
Blueshiva:alloc的retain count會+1,setter設定過再+1,self 12/31 12:14
Blueshiva:dealloc時-1,然後就leak了 12/31 12:15
leondemon:對我來說 能release就儘量不要autorelease 01/01 14:07
leondemon:而且許多物件有支援產生autoreleased object 01/01 14:08
leondemon:不用init後馬上又autorelease這麼長的敘述 01/01 14:09
Blueshiva:不過UIBarButtonItem沒支援 :p 01/01 23:34
leondemon:其實Apple應該要設法把這三行變成一行... XD 01/02 11:51
Gsus:shit...我忘記這是dot syntax了 01/03 02:02