2013-03-05 29 views
0

以前從未遇到過這個,有沒有人遇到了以下日誌的崩潰錯誤?[__NSCFString zOrder]:發送到實例的無法識別的選擇器

-[__NSCFString zOrder]: unrecognized selector sent to instance 0x11da100 

出於某種原因,它崩潰這一行:

[[MMClass alloc] init]; 

我的單例類實現的樣子:

static id instance = nil; 

+ (MMClass *)sharedInstance { 

    @synchronized([MMClass class]) 
    { 
     if (!instance) 
      [[MMClass alloc] init]; 
     return instance; 
    } 

    return nil; 
} 
+2

顯示'[MMClass init]'。 – trojanfoe 2013-03-05 11:53:03

+0

@trojanfoe:謝謝你指點我的方向。這很簡單,我錯過了那一個。我不知道爲什麼,但它發生,有時... – 2013-03-05 12:07:40

+0

由Marcelo Fabri提供的答案解決了您在代碼中遇到的另一個問題。 – trojanfoe 2013-03-05 12:08:29

回答

1

正如你所看到的,這個問題是一個消息zOrder發送到NSString。你應該搜索你的項目zOrder消息。

另外,當在調試器中運行並設置異常斷點時,Xcode應該精確定位有問題的代碼。

3

您並未將初始化對象分配給您的變量。另外,建議單身人士最推薦的方式是:

+ (MMClass *)sharedInstance { 
    static dispatch_once_t onceToken; 
    static MMClass* _sharedInstance = nil; 
    dispatch_once(&onceToken, ^{ 
     _sharedInstance = [[MMClass alloc] init]; 
    }); 
    return _sharedInstance; 
} 
+0

這是正確的;但爲什麼會崩潰? – trojanfoe 2013-03-05 12:03:50

+0

你的變量可能有一些垃圾值。正如Nikolai建議的那樣,看看你打電話給zOrder來檢查對象。 – 2013-03-05 12:06:50

相關問題