0

我试图弄清楚如何集中我在几个 ViewController 中使用的方法。我已经有一个用于一些变量的单例。我将单例类称为 Shared。

我将我的方法移动到 Shared 类并尝试像这样调用它:

m.createdAt = [Shared getUTCFormateDate:[messageObject objectForKey:@"created_at"]];

它给了我一个例外,说选择器在尝试调用它时不存在。

我已经导入了 Shared.h。任何其他想法将不胜感激。

4

2 回答 2

1

如果您的类被命名为“共享”,那么看起来您正在尝试调用类方法而不是实例方法。因此,您需要使用 + 而不是 - 来声明该方法。

于 2011-04-30T13:21:00.707 回答
0

这是在objective-c中创建单例的正确模式:(我将使用一个用户对象的示例..取自我面前打开的代码)。另外,请注意单例类和静态类方法之间存在差异,如此处所述。静态类和单例模式之间的区别?

在 .h 文件中,声明一个返回类实例的静态方法。

+(User *) currentUser;

在 .m 文件中,创建一个包含您的实例的静态变量

static User * _user;

然后,在您的 .m 类中,创建返回或实例化并返回您的静态变量的“公共”静态访问器 GET

+ (User *) currentUser
    {

        if (!_user) 
        {
            _user =[[User alloc]init];
            // ... init the singleton user properties and what not
            // ...
        }

        return _user;   

    }

然后,当您想调用 Singleton 类时,只需确保 User.h 已导入并调用[[User currentUser] someMethodorProperty]

请享用

于 2011-04-30T13:20:45.343 回答