我有Util類,如下所示。Objective-C對象的分配/釋放
@implementation Util
- (NSString*) getTodayString
{
NSDate *today = [NSDate date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
// display in 12HR/24HR (i.e. 11:25PM or 23:25) format according to User Settings
[dateFormatter setDateFormat:@"YYYY/MM/dd"];
NSString *now = [dateFormatter stringFromDate:today];
[dateFormatter release]; ///???
[today release]; //???
return now;
}
@end
而且我用
- (void)awakeFromNib
{
Util *ut = [[Util alloc] init];
NSString* now = [ut getTodayString];
NSLog(@"User's current time in their preference format:%@",now);
[currentTime setObjectValue:now];
[now release]; ///???
[ut release];
}
我釋放對象時感到困惑的類。
在getTodayString ::
Q1。 [dataFormatter版本]是必要的? Q2。 [今天發佈]是必要的?
我想我不需要釋放他們,因爲我沒有撥出自己。如果這是真的,那麼這些物體何時被釋放?
In awakeFromNib ::
Q3。 [ut釋放]是必要的? Q4。 [現在發佈]是必要的?
我想我必須發佈ut
作爲我明確創建對象,但不是關於now
對象的suer。
- 如何確定對象何時被釋放?
- 用python/C#/ Java不再關心這種類型的內存釋放。如果我不關心它們,Objective-C也可以嗎?
避免對從類方法自動發佈的對象進行假設。總是考慮對象所有權,即「我是否擁有這個對象?我是否從名稱中帶有'new','copy'或'alloc'的方法得到它?」 – dreamlax 2011-02-27 23:56:53
好點,澄清了我在這方面的發言。 – MarkPowell 2011-02-28 00:21:00