提供Objective-C类的共享实例的标准方法是:
+ (instancetype)sharedInstance {
static MyClass shared;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
shared = [MyClass new];
});
return shared;
}
但是如果初始化失败并返回nil
怎么办?它永远是nil
吗?不应该在某处进行nil
测试,然后在需要时以某种方式重置onceToken
?
答案 0 :(得分:3)
重置onceToken
不是一种选择。该块应采取必要的步骤,以确保在返回时初始化成功。
答案 1 :(得分:0)
您正在创建一个单身人士。如果你不能创建单身,那你就有一个严重的问题。如果这只是一个假设的问题,请忽略它。如果你的alloc / init可以返回nil,并且它返回nil,你可以做什么,除了把戒指扔进戒指并告诉你的应用程序自杀?您认为以后可能成功的任何理由?