Objective c 如果调度_包围的初始化一旦失败,该怎么办?
提供Objective-C类的共享实例的标准方法是:Objective c 如果调度_包围的初始化一旦失败,该怎么办?,objective-c,grand-central-dispatch,Objective C,Grand Central Dispatch,提供Objective-C类的共享实例的标准方法是: + (instancetype)sharedInstance { static MyClass shared; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ shared = [MyClass new]; }); return shared; } 但是,如果初始化失败并返回nil,该怎么办?它会永远
+ (instancetype)sharedInstance {
static MyClass shared;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
shared = [MyClass new];
});
return shared;
}
但是,如果初始化失败并返回
nil
,该怎么办?它会永远是零吗?是否应该在某个地方进行nil
测试,然后在需要时重置onceToken
(以某种方式)?重置onceToken
不是一个选项。块应采取任何必要的步骤,以确保在返回时初始化已成功。重置onceToken
不是一个选项。块应采取任何必要的步骤,以确保在返回时初始化已成功。重置onceToken
不是一个选项。块应采取任何必要的步骤,以确保在返回时初始化已成功。重置onceToken
不是一个选项。块应采取任何必要的步骤,以确保在返回时初始化已成功。您正在创建单例。如果无法创建单例,则会出现严重问题。如果这只是一个假设性的问题,请忽略它。如果您的alloc/init可以返回nil,并且它返回nil,那么除了将毛巾扔进戒指并告诉您的应用程序自杀之外,您还能做什么?你有什么理由认为以后会成功 您正在创建一个单例。如果无法创建单例,则会出现严重问题。如果这只是一个假设性的问题,请忽略它。如果您的alloc/init可以返回nil,并且它返回nil,那么除了将毛巾扔进戒指并告诉您的应用程序自杀之外,您还能做什么?你有什么理由认为以后会成功 您正在创建一个单例。如果无法创建单例,则会出现严重问题。如果这只是一个假设性的问题,请忽略它。如果您的alloc/init可以返回nil,并且它返回nil,那么除了将毛巾扔进戒指并告诉您的应用程序自杀之外,您还能做什么?你有什么理由认为以后会成功 您正在创建一个单例。如果无法创建单例,则会出现严重问题。如果这只是一个假设性的问题,请忽略它。如果您的alloc/init可以返回nil,并且它返回nil,那么除了将毛巾扔进戒指并告诉您的应用程序自杀之外,您还能做什么?你有什么理由认为以后会成功