Ios 目标c中的方法类是什么

Ios 目标c中的方法类是什么,ios,objective-c,Ios,Objective C,这可能是个愚蠢的问题。我正在学习objective C(iOS),通过学习代码,我发现了这个表达式 [InstanceName class]; 它有什么作用 我试图搜索类方法,但它只是弹出类方法和实例方法等之间的区别。我猜它可能会给出某种类对象,但我不知道该语句的目的是什么 原始代码是使用FB SDK的样例Facebook应用程序(Scrumpious)…它获取对象的类 例如,如果InstanceName是类Foo的实例 [InstanceName类]将返回Foo,类型为Class 您可以使用

这可能是个愚蠢的问题。我正在学习objective C(iOS),通过学习代码,我发现了这个表达式

[InstanceName class];
它有什么作用

我试图搜索类方法,但它只是弹出类方法和实例方法等之间的区别。我猜它可能会给出某种类对象,但我不知道该语句的目的是什么


原始代码是使用FB SDK的样例Facebook应用程序(Scrumpious)…

它获取对象的类

例如,如果InstanceName是类Foo的实例

[InstanceName类]
将返回
Foo
,类型为
Class


您可以使用
class\u getClassName
从此类中获取
NSString
来记录它。

class
是继承自的方法。它允许您获取类对象的实例,该类对象表示调用该方法的实例的类

它可用于检查当前对象的元数据。例如,可以使用
class
方法确定给定对象是否属于特定类:

if ([sender isKindOfClass:[UIButton class]]) {
    ...
}

它返回对象的类。假设您创建了一个
UIView
子类数组,并且只想对属于某个类的人执行某些操作。您可以在数组中循环并检查每个对象的类:

for (id view in myViews) {
  if ([view isKindOfClass:[MyUIViewSubclass class]]) {
     // Do something
  }
}

如果您将这样的内容视为一个独立的表达式

[InstanceName class];
。。。然后,代码很可能强制在所述类上执行
+initialize
方法。第一次在类上调用任何方法时,运行时将先调用
+initialize
方法。因此,请查看
InstanceName
,看看它是否有
+initialize
方法

请注意,强制以这种方式执行
+initialize
,肯定是设计不好的标志<代码>+初始化不应该像这样强制执行,也不应该具有执行顺序依赖关系



这一行代码可能存在还有一个合理的额外原因。通过使用硬引用引用
InstanceName
,它将强制链接器链接库中的所有符号。(如果您没有对库中至少一个符号的硬引用--a.a--一些链接器会将库从链接单元中完全删除。)

我理解在您提供的上下文中,您可以将结果传递到某个方法中。我不能让我的头周围看到它作为一个单行语句[Foo类]@lombausch噢,我没有意识到表达式是独立的。运行时API从不返回
NSString
class
是一个类方法,不是NSObject协议中的实例方法,但确实存在一个实例方法。在尝试破译代码之前,阅读一些文档可能更容易。。。只是说说而已。@CaptJak除非您深入阅读运行时和链接器文档,否则文档在这种情况下并没有真正的帮助。@bbum:True。但我也提到了“我正在通过学习代码来学习objective C(iOS)”。我不是因为他问这个问题而责骂他。这个问题很好。@CaptJak我当然在查阅文档。这是教程的一个示例应用程序,在描述中这一行被悄悄地忽略了。我只是感兴趣,仅此而已,没必要踢开大门。发生了什么事???现在我感觉很糟糕!我并不是说你做错了什么,只是加入了另一个选项,这个选项没有被提及。对不起,我冒犯了你。我明白了,你被否决了。。。不是我!