我多次使用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
是否正确。先感谢您。
最佳答案
后面两种方法都是正确的,但是我相信您希望将它们放在一起!
static NSDateFormatter *sharedInstance = nil;
+ (NSDateFormatter *)sharedInstance {
if (sharedInstance == nil) {
sharedInstance = [[NSDateFormatter alloc] init];
}
return sharedInstance;
}
注意:此类称为单例。 Read more
关于objective-c - +(void)initialize方法中的alloc-init对象可以多次重用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10515151/