在目標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個贊
實例類型
instancetypeObjective-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 關注
- 605 瀏覽
添加回答
舉報
0/150
提交
取消
