Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 如果调度_包围的初始化一旦失败,该怎么办?_Objective C_Grand Central Dispatch - Fatal编程技术网

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,该怎么办?它会永远

提供Objective-C类的共享实例的标准方法是:

+ (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,那么除了将毛巾扔进戒指并告诉您的应用程序自杀之外,您还能做什么?你有什么理由认为以后会成功