Ios 目标c中的方法类是什么
这可能是个愚蠢的问题。我正在学习objective C(iOS),通过学习代码,我发现了这个表达式Ios 目标c中的方法类是什么,ios,objective-c,Ios,Objective C,这可能是个愚蠢的问题。我正在学习objective C(iOS),通过学习代码,我发现了这个表达式 [InstanceName class]; 它有什么作用 我试图搜索类方法,但它只是弹出类方法和实例方法等之间的区别。我猜它可能会给出某种类对象,但我不知道该语句的目的是什么 原始代码是使用FB SDK的样例Facebook应用程序(Scrumpious)…它获取对象的类 例如,如果InstanceName是类Foo的实例 [InstanceName类]将返回Foo,类型为Class 您可以使用
[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我当然在查阅文档。这是教程的一个示例应用程序,在描述中这一行被悄悄地忽略了。我只是感兴趣,仅此而已,没必要踢开大门。发生了什么事???现在我感觉很糟糕!我并不是说你做错了什么,只是加入了另一个选项,这个选项没有被提及。对不起,我冒犯了你。我明白了,你被否决了。。。不是我!