我在同一个主题上看到过很多其他问题,但对于我来说,他们并不是很清楚,是Objective-C的新手。
我需要一个简单的英语解释。在我的学习中,“编码说话”对我来说太难理解了。
答案 0 :(得分:2)
实例方法或变量适用于该实例。类方法(Objective-C中的类没有变量,尽管它们可以以各种方式模拟)适用于整个类。
考虑典型的Dog
类,它来自Mammal
类(以及生命树上的等等。)特定的狗有name
和{{1}和collar
- 这些是它的属性。特定的狗可能会owner
或-bark
或-chaseBall
- 这些都是它的方法。
另一方面,-buryBoneInBackyard
类有不同的方法。 Dog
类具有Dog
,并且可以使用+globalPopulation
工厂方法实例化自身。 +dogWithDNA:
类将使用Dog
方法指示整个物种是否灭绝(当然不是。)
简而言之:类方法会影响整个类,而实例方法会影响类的特定实例。
答案 1 :(得分:2)
首先,Objective-C没有类变量。有些东西可以像类变量一样进行模态处理,但它们不是真正的类变量(参见“静态变量”)。
在Objective-C中,每个类实际上都是一个类的实例。因此,类方法只是一种适用于类的方法。它们可以被继承和覆盖。
答案 2 :(得分:0)
每个实例上都存在实例变量(ivars)和实例方法。每个实例有一个ivar。无法在类上调用实例方法。
类变量^和类方法在实例上不存在,它们存在于类中。这意味着在整个应用程序中只会有一个类变量,而不管创建了多少个实例。可以在没有实例*的情况下调用类方法,因此它们就像普通的C函数一样。由于类方法未附加到实例,因此类方法无法访问ivars 。
^ Objective-C本身没有类变量。 “类变量”实际上是C中的静态全局变量。
*从技术上讲,类是一个实例,所以类方法实际上是实例方法。
答案 3 :(得分:0)
一个类似于某种东西的模具,你可以用石膏填充。
因此,类级别方法是您可以查看和访问和使用的方法,而无需创建单个对象。
一个例子就像是将石膏倒入模具中并取出一些东西。你可以根据需要加盖;然后,一个实例变量就是该对象上的一个位置来保存某个东西,而一个实例方法只能用于那个单个对象而不是所有对象。