作者Gsus (肉元,吉米,助教)
看板MacDev
标题[问题] 关於init一个物件的写法
时间Thu Dec 31 02:42:55 2009
新手又来问问题了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
1F:推 Blueshiva:这样你後面要怎麽release? 12/31 04:06
2F:推 seruziu:iPhone能不能加上 [[[xx alloc] init] autorelease] ?? 12/31 07:52
3F:推 Blueshiva:可以啊,只是这样子会变得很长就是了 12/31 11:27
4F:→ Gsus:两种写法的最後不都是由self.navigati...tem所retain吗 12/31 12:10
5F:→ Gsus:还是我有观念错误的地方@@ 12/31 12:10
6F:推 Blueshiva:alloc的retain count会+1,setter设定过再+1,self 12/31 12:14
7F:→ Blueshiva:dealloc时-1,然後就leak了 12/31 12:15
8F:推 leondemon:对我来说 能release就尽量不要autorelease 01/01 14:07
9F:→ leondemon:而且许多物件有支援产生autoreleased object 01/01 14:08
10F:→ leondemon:不用init後马上又autorelease这麽长的叙述 01/01 14:09
11F:推 Blueshiva:不过UIBarButtonItem没支援 :p 01/01 23:34
12F:推 leondemon:其实Apple应该要设法把这三行变成一行... XD 01/02 11:51
13F:→ Gsus:shit...我忘记这是dot syntax了 01/03 02:02