我是iphone的內存管理新手,並且對標準/正確性有疑問。iphone @property(retain),init()和標準
我的頭文件聲明:
IBOutlet UITabBarController *tabBarController;
@property (nonatomic, retain) UITabBarController *tabBarController;
在我的init()的代碼,我在做類似如下:
self.tabBarController = [[UITabBarController alloc] init];
[tabBarController release];
NSLog(@"Retain count of tbc: %d",[tabBarController retainCount]);
得到保留計數回一個。從標準化的角度來看,這是否正確?它看起來和我有點不同,但我又是新來的。
感謝
在init方法的第一行釋放一個實例變量是瘋狂的談話。 – hooleyhoop 2010-06-10 09:22:16
我正在從一本書中學習,而這本書推動@property()的;我應該在這種情況下甚至使用這種符號嗎?或者自己處理alloc init? – inyourcorner 2010-06-10 13:00:22
@property()是存取器方法的語法糖。所以問題是你應該使用setter訪問器方法(這就是使用屬性會爲你做的)或不是(無論你需要處理alloc/init)?通常你應該使用setter方法來讓你的屬性的觀察者得到更新通知,但是這在init方法中是不相關的。此外,如果setter方法在子類中被覆蓋,這會導致它在子類被初始化之前被調用 - 而且這會很糟糕。 – hooleyhoop 2010-06-10 13:12:41