我有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