【发布时间】:2012-05-17 21:54:38
【问题描述】:
我多次使用NSDateFormatter 对象(为特定目的而定制)。由于我不是 objc 专家,所以我想出了三种不同的方法来处理它。
在第一个中,我创建了一个NSDateFormatter 类别并在那里自定义了代码。这是常见的方法,但每次我创建这样的对象时,都会将其放入主自动释放池中。我认为这种行为对非 ARC 和 ARC 代码都有效。
在第二个中,我重写了+(void)initialize 方法并将自定义代码放在那里。这里举个简单的例子:
static NSDateFormatter* dateFormatter = nil;
+(void)initialize
{
dateFormatter = [[NSDateFormatter alloc] init];
// other code here
}
最后,我通过如下属性使用延迟加载实例化设置了第三种方法:
-(NSDateFormatter)dateFormatter
{
if(dateFormatter) return dateFormatter;
// alloc-init here
}
说到这里,我想知道哪种方法最适合多次处理对象,以及以这种方式使用+(void)initialize是否正确。
提前谢谢你。
【问题讨论】:
-
我喜欢第二种或第三种方法,所有方法都适合我。
-
@trojanfoe +1。感谢您的评论。
标签: objective-c ios code-reuse lazy-initialization