singletone

  • ,

    dispatch_asyncの内部コードが実行されない時

    dispatch_asyncの内部コードが最後まで実行されず原因を調べた。 原因はsingletone実装の問題があった。 dispatch_asyncで呼ばれたsingletoneオグジェクトが 正しく初期化されないことが原因。 [だめな方法] +(MyClass) shared { static MyClass *_sharedInstance = nil; if(_sharedInstance == nil){ dispatch_once_t onceTokeon; dispatch_once(&onceTokeon, ^{ _sharedInstance = [[MyClass alloc] init]; }); } return _sharedInstance; } [正しい方法] +(MyClass *){ static MyClass *sharedInstance; @synchronized(self) { if (sharedInstance == nil) { sharedInstance = [[MyClass alloc] init]; } } return sharedInstance; } [Apple 推奨] +(MyClass…

    続きを読む