2015-12-21 62 views
0

使用类方法而不是实例方法有什么优势吗? For Objective-c:使用类方法而不是实例方法有什么优势吗?

class method: 
use symbol + (void) method; 
call: [Class method]; 


instance method: 
use symbol - (void) method; 
call: [class.obj method]; 
+3

(几乎唯一的)优点是不必创建类的实例即可调用该方法。 – luk2302

+0

你可以查看http://stackoverflow.com/a/11174572/5362916 –

回答

0

我的解释有点不同。

实例方法发送到一个类的INSTANCE。一个类的实例是一个具体的事情。它具有持续存在于对象生命中的状态数据。向对象发送消息时,它可以使用该状态数据来处理事件,并且可以记住以后的信息。

将类方法作为一个整体发送给类。一个类是一个更抽象的概念。类至少在Objective C中保存状态数据(在C++等其他语言中,有属于整个类的类变量,但Objective C没有类变量。)

让我们来看一个例子一汽车厂

汽车厂是班。汽车类有一个类方法buildCar。 buildCar方法使用参数来告诉汽车应该是什么颜色,引擎应该多大,应该有什么选项等等。你给汽车工厂(类)发送了一个buildCar消息,并且它创建并返回了一个实例那个班级(汽车厂为你建造一辆汽车并给你)

一旦你创建了一辆汽车,那辆汽车的状态变量就存储了收音机上的频道,剩下的气量在油箱中,里程表上的微动(“千米”?),刹车上的磨损水平等。不同的汽车对于这些变量将具有不同的值。

你可以问一辆单独的车辆里面剩下多少气体。 (实例方法)。车A可能有满罐,而车B可能几乎是空的。

但是,向汽车厂询问油箱内有多少气体是没有意义的。一家汽车厂没有油箱。但是,您可以向汽车制造厂询问可以生产的汽车类型以及这些汽车的选项。那是汽车工厂始终适用的静态信息。除了“工厂方法”(例如,构建一辆汽车)之外,还可以使用类方法,例如使用过程语言中的函数。类方法是独立的。您将所有参数传递到所需的方法中,以执行所需的任何任务,并且返回单个结果(或者对于void类方法没有结果)。一旦类方法执行完毕,就没有状态留下数据记录发生了什么。

-1

这不是一个好处。这就像是用锤子而不是锯子有没有什么优势。这个问题是无稽之谈。你使用锤子锤击和锯锯。

您可以使用实例方法处理与类的实例有关的事物。 您可以将类方法作为一个整体与类相关。

相关问题