【问题标题】:Objective C - How to call class methods without allocating and initializing an objectObjective C - 如何在不分配和初始化对象的情况下调用类方法
【发布时间】:2015-01-05 23:11:06
【问题描述】:

我是 Objective-C 的新手,我发现有效的 Objective-C 代码的语法很难理解。例如,通常使用 MyClass *myObject = [[MyClass alloc] init]; 分配和初始化所有对象。句法。但是,在下面的示例中,在创建该类的初始化对象之前,在“NSKeyedArchiver”类上调用了一个方法。同样的情况发生在下一行代码中,在“NSUserDefaults”上调用了一个方法,而没有创建分配/初始化的对象。这怎么可能?

NSData *bandObjectData = [NSKeyedArchiver archivedDataWithRootObject:self.bandObject];
[[NSUserDefaults standardUserDefaults] setObject:bandObjectData forKey:bandObjectKey];

谢谢!

【问题讨论】:

  • [ClassName theClassMethodName] 是如何完成的。就像 Java 中的静态方法一样。

标签: objective-c init alloc


【解决方案1】:

这些被称为类方法,它们不需要执行类的实例,因为它们不依赖于实际的类实例。实际上,您可以通过在方法前加上 + 号(而不是 - 号)来创建自己的方法

当我们不依赖于类的实例时,我们通常使用类方法。因此,在您的示例中, NSKeyedArchiver 类不需要创建自身的实例来归档数据。同样,您可以在不创建 NSUserDefaults 对象的情况下获得标准的 NSUserDefaults。

其他类型的方法(实例方法)在对象本身需要改变其状态时使用。

【讨论】:

  • 谢谢!!真的很欣赏它
  • 你的第一句话有点不准确:类本身其实就是一个对象。
猜你喜欢
  • 2010-09-14
  • 2011-02-26
  • 1970-01-01
  • 2014-10-07
  • 1970-01-01
  • 2011-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多