【问题标题】:Calling a public method调用公共方法
【发布时间】:2011-08-16 01:32:18
【问题描述】:

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

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

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

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

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

【问题讨论】:

标签: iphone objective-c ios4 public-method


【解决方案1】:

这是在 Objective-c 中创建 Singleton 的正确模式:(我将使用 User 对象的示例......取自我面前打开的代码)。另外,请注意单例类和静态类方法之间存在差异,正如这里所讨论的那样。Difference between static class and singleton pattern?

在 .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]

享受

【讨论】:

  • 谢谢。尽管我一直在使用共享变量,但我已经有了一个可以工作的 Singleton。这是我试图调用 Shared 方法的地方。我忘记了 + 号。
【解决方案2】:

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

【讨论】:

  • 我以为我有加号,但你是对的。就是这样!谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-19
  • 1970-01-01
  • 2015-08-26
  • 1970-01-01
  • 1970-01-01
  • 2018-12-08
  • 2011-01-30
相关资源
最近更新 更多