我想只应该初始化一次的类,并返回一些第一次计算的值。下面是正确的方法吗?
@property (nonatomic, retain) NSString *userAgent;
@implementation UserAgent
@synthesize userAgent = _userAgent;
+ (NSString *) userAgentString
{
UserAgent *thisClass;
if(self == nil)
{
thisClass = [[UserAgent alloc] init];
}
if (thisClass.userAgent == nil)
{
return @"not initialized";
}
return thisClass.userAgent;
}
最佳答案
没有。thisClass
是局部变量。这意味着,每次调用+userAgentString
时,该值都会重置(以清除垃圾)。至少将其设为static
。self
的含义不是您在类方法中所期望的。您是说thisClass
吗?
即使进行了上述修复,该方法也不是线程安全的,这可能会也可能不会。
请参见Create singleton using GCD's dispatch_once in Objective C和Singleton in iOS 5?作为示例来正确构造单例。
关于iphone - 静态方法 objective-c -一次初始化,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10401985/