【发布时间】:2010-12-16 22:51:06
【问题描述】:
我对以下两种初始化方式有点困惑.....
方式一:
- (void) myMethod{
NSArray *myArray = [[NSArray alloc] initWithObjects:obj1,obj1,nil];
[self setClassArray:myArray];
[myArray release];
}
方式二:
- (void) myMethod{
NSArray *myArray = [NSArray arrayWithObjects:obj1,obj2,nil];
[self setClassArray:myArray];
}
在方式 1 中,我使用了一个 alloc init 方法,它是一个实例方法,并且因为我使用了一个 alloc 语句,所以我必须自己释放数组。
在方式 2 中,我使用了静态方法来初始化数组,并且由于没有使用 alloc 语句,我不需要释放内存,系统会处理。
方式一,费时费力,如果不注意可能会导致内存泄漏
方式2,写起来更快,不需要处理内存泄漏
但是,我仍然看到在标准源代码中使用的方式 1 比方式 2 更频繁。我不知道为什么人们会这样做,或者我是否在某些地方错了。
公开邀请答案和cmets。请建议最佳编程实践。
【问题讨论】:
标签: iphone objective-c memory-management initialization