跳到主要內容

[iOS] Singleton pattern in objc, how to keep init private?

From https://stackoverflow.com/questions/7034971/singleton-pattern-in-objc-how-to-keep-init-private

Throw an exception in init

- (instancetype)init {
    [self doesNotRecognizeSelector:_cmd];
    return nil;
}

- (instancetype)initPrivate {
    self = [super init];
    if (self) {
    }
    return self;
}

+ (instancetype)sharedInstance {
    static MySingleton *sharedInstance;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        sharedInstance = [[self alloc] initPrivate];
    });
    return sharedInstance;
}

Have init return your singleton

- (instancetype)init {
    return [[self class] sharedInstance];
}

- (instancetype)initPrivate {
    self = [super init];
    if (self) {
    }
    return self;
}

+ (instancetype)sharedInstance {
    static MySingleton2 *sharedInstance;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        sharedInstance = [[self alloc] initPrivate];
    });
    return sharedInstance;
}

留言

這個網誌中的熱門文章

[Swift] String Format for NT$

  var amount = NSNumber(int: 8880) var _currencyFormatter = NSNumberFormatter() _currencyFormatter.numberStyle = NSNumberFormatterStyle.DecimalStyle //_currencyFormatter.currencyCode = "NT$ " //_currencyFormatter.formatterBehavior = NSNumberFormatterBehavior.BehaviorDefault //_currencyFormatter.negativeFormat = "-$#,##0" _currencyFormatter.positiveFormat = "NT$ #,##0" _currencyFormatter.stringFromNumber(amount)   輸出結果︰ NT$ 8,880   參考︰ http://www.cokco.cn/thread-35548-1-1.html http://www.freair.com/bbs/simple/?t558.html

[Sublime] 搜尋檔案中是否有使用IPv4

因為原server要搬移,導至IP會變,所以被求找出使用到的IP 這時候用Regular是最快的了~ 1. 首先去查查有沒有網友寫好的reguler 找到  http://www.regular-expressions.info/ip.html 簡單點,使用這個 \b(?:\d{1,3}\.){3}\d{1,3}\b 2. 以前都是用UltraEdit,但在Mac只好用sublime嘍 注意!這裡的Regular要寫成  (?:\d{1,3}\.){3}\d{1,3} 限制搜尋的檔案類型 多種類的話就一直加下去︰ /Users/kirk/Documents/Projects/,*.h,*.m,*.swift,*.xml 以上~

小米路由器 mini 刷機

這次會來刷機是因為要給 MOD 使用 但原本的 小米路由器 mini 沒支援 IPTV 不想再買一台路由器(已經有四台了XD,有3台是被淘汰的)   參考文章︰ 1.  ERIC的攝影世界 - 小米路由器mini 免USB打開SSH  ( 備份檔案 ) 2.  ERIC的攝影世界 - 小米路由器mini韌體刷openwrt PandoraBox韌體  ( 備份檔案 ) 3.  寫寫東西 分享心得 - 小米路由器mini 改韌體 可看中華電信MOD iptv功能開啟 刷機 刷rom 直通MOD 老毛子Padavan固件 華碩 RT-AC54U  ( 備份檔案 )   其實找了很多篇文章,大部份都教用官方的那招,但不知道為什麼我就是取不到SSH的密碼 https://d.miwifi.com/rom/ssh  這個一直導不到要的那頁… 所以後來是用了  ERIC的攝影世界 - 小米路由器mini 免USB打開SSH  的第二招  免USB打開SSH 步驟︰ 1. 手動更新韌體到小米路由器mini 穩定版 2.8.14 ( 備用檔案 ) 2. 然後按  ERIC的攝影世界 - 小米路由器mini 免USB打開SSH  的 1.2.3.4.5   2.1 登入  小米路由器mini控制台  後複制網址     http://192.168.31.1/cgi-bin/luci/;stok=521b849e00a11c5b6743aa275ba84ed8 /web/home#router   2.2 將下面的網址紅色部份換成自己的,然後再貼到Browser上     http://192.168.31.1/cgi-bin/luci/;stok=521b849e00a11c5b6743aa275ba84ed8 /api/xqsystem/set_name_password?oldPwd=路由器控制台管理密碼&newPwd=admin     順利的會得到  {"code":0}   2.3 將下面的網址紅色部份換成自己的,然後再貼到Browser上     http://192.168.31.1/cgi-bin/luci/;stok=521b849e00a11c5b6743aa275ba84ed8 /api/x...