ios - 在 Objective-C 中使用 GCD 的 dispatch_once 创建单例

如果你可以针对 iOS 4.0 或更高版本

使用 GCD,在 Objective-C(线程安全)中创建单例是最好的方法吗?

+ (instancetype)sharedInstance
{
    static dispatch_once_t once;
    static id sharedInstance;
    dispatch_once(&once, ^{
        sharedInstance = [[self alloc] init];
    });
    return sharedInstance;
}

最佳答案

这是创建类实例的完全可接受且线程安全的方法。从技术上讲,它可能不是“单例”(因为这些对象只能有 1 个),但只要您只使用 [Foo sharedFoo] 方法来访问该对象,这就是足够好。

https://stackoverflow.com/questions/5720029/

相关文章:

ios - 将 NSURL 转换为 NSString

iphone - 找不到 -lPods 的库

objective-c - 在不使用私有(private) API 的情况下获取当前的第一响应者

ios - 如何在 Swift 中发出 HTTP 请求?

ios - 在 Xcode 6 中使用 AutoLayout 约束模拟方面适合行为

ios - 何时使用 NSInteger 与 int

objective-c - 我的 Objective-C 单例应该是什么样的?

objective-c - 对 Objective-C 代码进行单元测试的最佳方法是什么?

objective-c - NSString 属性 : copy or retain?

objective-c - 使用 alloc init 而不是 new