2013-03-05 31 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

相关问题