亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在目標C中使用gcd的調度一次創建單例

在目標C中使用gcd的調度一次創建單例

呼喚遠方 2019-06-28 15:46:09
在目標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]方法來訪問對象,這就足夠了。


查看完整回答
反對 回復 2019-06-28
?
偶然的你

TA貢獻1841條經驗 獲得超3個贊

實例類型

instancetype的許多語言擴展之一。Objective-C,每個新版本都會添加更多內容。

知道了,愛死了。

并以它為例,說明如何關注低層次的細節可以讓你洞察到轉變目標C的強大的新方法。

請參閱此處:instancetype


+ (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;}


查看完整回答
反對 回復 2019-06-28
?
慕哥9229398

TA貢獻1877條經驗 獲得超6個贊

MySingleton.h

@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

MySingleton.m

@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


查看完整回答
反對 回復 2019-06-28
  • 3 回答
  • 0 關注
  • 597 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號