我试图弄清楚如何集中我在几个 ViewController 中使用的方法。我已经有一个用于一些变量的单例。我将单例类称为 Shared。
我将我的方法移动到 Shared 类并尝试像这样调用它:
m.createdAt = [Shared getUTCFormateDate:[messageObject objectForKey:@"created_at"]];
它给了我一个例外,说选择器在尝试调用它时不存在。
我已经导入了 Shared.h。任何其他想法将不胜感激。
我试图弄清楚如何集中我在几个 ViewController 中使用的方法。我已经有一个用于一些变量的单例。我将单例类称为 Shared。
我将我的方法移动到 Shared 类并尝试像这样调用它:
m.createdAt = [Shared getUTCFormateDate:[messageObject objectForKey:@"created_at"]];
它给了我一个例外,说选择器在尝试调用它时不存在。
我已经导入了 Shared.h。任何其他想法将不胜感激。
如果您的类被命名为“共享”,那么看起来您正在尝试调用类方法而不是实例方法。因此,您需要使用 + 而不是 - 来声明该方法。
这是在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]
;
请享用