【问题标题】:XCode 4 : error at runtime "unrecognized selector sent to instance"XCode 4:运行时出错“无法识别的选择器发送到实例”
【发布时间】:2011-04-27 12:35:19
【问题描述】:

我开发了一个静态库并构建了我的 lib.a。

当我在 iOS 项目(使用 -ObjC 和 -all_load 标志为链接器构建的 iPhone 应用程序)中使用此库时,我在运行时收到此错误:

unrecognized selector sent to instance

当我尝试调用类方法时出现此错误。

+ (MyObject *) GetSingleton;

关于信息,我在调用实例方法时没有收到错误。

- (void) Log;

你知道问题所在了吗?

【问题讨论】:

  • 你到底是怎么称呼单身的?
  • 我用这个代码行调用它:[[MyObject GetSingleton] Log];
  • 您是否正在为单例分配和初始化实例?
  • 是的,这是 GetSingleton 实现:if (_singleton == nil) { _singleton = [[super allocWithZone:NULL] init]; }
  • 有关某个问题的更多信息将很有帮助。提供一段更大的代码(如果它是单例的标头和实现更好),带有崩溃的堆栈跟踪和包含方法名称的完整错误。谢谢;)

标签: ios static singleton


【解决方案1】:

当你创建你的单例时,试试这个:

+ (MyObject *)GetSingleton {
    static MyObject* singletonInstance; 

    @synchronized(self) {
        if (!singletonInstance)
            singletonInstance = [[MyObject alloc] init]; 
    }

    return singletonInstance;
}

希望对您有所帮助。

【讨论】:

  • 谢谢解答,还是不行,还是一样的错误
  • 如果我不使用静态库,并且在我的项目中导入我的单例类,没有问题!你有什么想法吗?
【解决方案2】:

嗯,我解决了重新创建项目的问题!

我不知道为什么,我的项目对类方法进行了错误的链接,而不是对实例方法。

现在,有了新项目并链接到我的静态库,运行时一切正常。

也许这是因为我构建了多个静态库,可能是缓存或依赖关系不好...

感谢您的回答开发者!

【讨论】:

    猜你喜欢
    • 2014-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-05
    • 1970-01-01
    • 1970-01-01
    • 2012-04-04
    • 1970-01-01
    相关资源
    最近更新 更多