-6

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

我的 .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 存在于我的 Singleton 类中。

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

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

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

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

4

1 回答 1

3

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

所以你很可能做了:

[Singleton myMethod:...];

更正您的电话:

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

编辑:

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

+ (Singleton*)sharedInstance 
{
    static Singleton *instance = nil;
    if (nil == instance) 
    {
        instance = [[Singleton alloc] init];
    }
    return instance;
}
于 2013-03-15T04:37:06.047 回答