2
我遇到類似於this post的問題,但該答案對我無效。Singleton方法在iOS中停止代碼執行
我有我的應用程序單身,我用這種方式創建:
static POGalleryManager* defaultManager = nil;
+(POGalleryManager*)defaultManager
{
if (!defaultManager) {
defaultManager = [[super allocWithZone:NULL] init];
}
return defaultManager;
}
+(id)allocWithZone:(NSZone *)zone
{
return [self defaultManager];
}
這是工作的罰款,所以我試圖弄巧和使用GCD線程安全,切換到這一點,這是應該是更好的:
+(POGalleryManager*)defaultManager
{
static POGalleryManager* __manager = nil;
dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
__manager = [[POGalleryManager alloc] init];
});
return __manager;
}
第一次被調用,一切都很好。第二次它被這樣調用:
[[POGalleryManager defaultManager] someMethod];
someMethod永遠不會被調用。我試着用調試器進入該行,一旦它進入dispatch_once行,它就會繼續執行(即它將我踢出調試器 - 所以也許線程死了?)。
對此有何建議?
謝謝。顯然,我是盲人。 – Shinigami