【问题标题】:Unrecognized selector sent to class singleton arc [closed]无法识别的选择器发送到类单例弧[关闭]
【发布时间】:2013-03-03 17:14:58
【问题描述】:

我通过以下方式设置了单例类

我的 .h 有以下代码

 + (Singleton *)sharedInstance;

.m 如下所示

+ (Singleton *)sharedInstance
{
        if (nil == sharedInstance) {
           sharedInstance = [[Singleton alloc] init];
    }
    return sharedInstance;
}

当我尝试从另一个类访问 Singleton 类中的方法时,我收到以下错误

  reason: '+[Singeleton myMethod:]: unrecognized selector sent to class

myMethod 存在于我的单例类中。

Single Class 使用 ARC,而调用类是 Non-ARC。

我不确定这是否与此有关。

myMethod 是一个 NSNotification,我通过向它发送一个字典对象并使用通知名称来调用该方法。

编辑:我确实尝试在其他似乎没有帮助的线程上阅读和实施建议。

【问题讨论】:

  • 你能分享一下你的单例实现吗?
  • myMethod 包含任何参数?
  • 弧没有任何东西。你是怎么打电话给myMethod的?
  • 我已经更新了主线程
  • 请检查我的回答,如果适用,请告诉我们。如果不是,请包括myMethod: 的定义以及对myMethod: 的调用。

标签: ios objective-c singleton automatic-ref-counting unrecognized-selector


【解决方案1】:

您似乎调用了类方法而不是实例方法。

所以你很可能做到了:

[Singleton myMethod:...];

更正你的电话:

[[Singleton sharedInstance] myMethod:...];

编辑:

哦,我现在意识到一个更糟糕的问题;你的单身工厂坏了。没有您要返回的实例。试试这个变种。它不是线程安全的,但对你来说可能已经足够了。

+ (Singleton*)sharedInstance 
{
    static Singleton *instance = nil;
    if (nil == instance) 
    {
        instance = [[Singleton alloc] init];
    }
    return instance;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-28
    • 2012-07-24
    相关资源
    最近更新 更多