2 iphone macos cocoa objective-c
我有一个类,其中包含一些需要从另一个类调用的实例方法.我知道怎么做 -
TimeFormatter *myTimeFormatter = [[TimeFormatter alloc] init];
[myTimeFormatter formatTime:time];
Run Code Online (Sandbox Code Playgroud)
但是,每次我需要调用其中一个方法时,我不希望必须分配和初始化TimeFormatter.(我需要从另一个类中的各种方法调用TimeFormatter的方法).
我尝试过
TimeFormatter *myTimeFormatter = [[TimeFormatter alloc] init];
Run Code Online (Sandbox Code Playgroud)
"本身",或者不在任何块中,但是当我编译时,我得到一个"初始化元素不是常量"错误.
任何输入都非常感谢!
您可以使用单例模式.你可以在这里阅读更多相关信息.
具体来说,你会做类似的事情:
static TimeFormatter* gSharedTimeFormatter = nil;
@implementation TimeFormatter
+ (TimeFormatter*)sharedTimeFormatter {
if (!gSharedTimeFormatter) {
@synchronized(self) {
if (!gSharedTimeFormatter) {
gSharedTimeFormatter = [[TimeFormatter alloc] init];
}
}
}
return gSharedTimeFormatter;
}
...
@end
Run Code Online (Sandbox Code Playgroud)
请注意,我们检查变量是否为null,如果是,则进行锁定,然后再次检查.这样,我们只在分配路径上产生锁定成本,这在程序中只发生一次.这种模式称为双重检查锁定.
| 归档时间: |
|
| 查看次数: |
470 次 |
| 最近记录: |