在目標C中使用gcd的調度一次創建單例如果您可以針對IOS 4.0或更高版本使用GCD,它是否是在Object-C(線程安全)中創建單例的最佳方法?+ (instancetype)sharedInstance{
static dispatch_once_t once;
static id sharedInstance;
dispatch_once(&once, ^{
sharedInstance = [[self alloc] init];
});
return sharedInstance;}
3 回答

RISEBY
TA貢獻1856條經驗 獲得超5個贊
[Foo sharedFoo]

偶然的你
TA貢獻1841條經驗 獲得超3個贊
實例類型
instancetype
Objective-C
+ (instancetype)sharedInstance{ static dispatch_once_t once; static id sharedInstance; dispatch_once(&once, ^ { sharedInstance = [self new]; }); return sharedInstance;}
+ (Class*)sharedInstance{ static dispatch_once_t once; static Class *sharedInstance; dispatch_once(&once, ^ { sharedInstance = [self new]; }); return sharedInstance;}

慕哥9229398
TA貢獻1877條經驗 獲得超6個贊
@interface MySingleton : NSObject+(instancetype)sharedInstance;+(instancetype)alloc __attribute__((unavailable("alloc not available, call sharedInstance instead")));-(instancetype)init __attribute__((unavailable("init not available, call sharedInstance instead")));+(instancetype)new __attribute__((unavailable("new not available, call sharedInstance instead")));-(instancetype)copy __attribute__((unavailable("copy not available, call sharedInstance instead")));@end
@implementation MySingleton+(instancetype)sharedInstance { static dispatch_once_t pred; static id shared = nil; dispatch_once(&pred, ^{ shared = [[super alloc] initUniqueInstance]; }); return shared;}-(instancetype)initUniqueInstance { return [super init];}@end
- 3 回答
- 0 關注
- 597 瀏覽
添加回答
舉報
0/150
提交
取消