Objective c 目标C类方法,实例方法

Objective c 目标C类方法,实例方法,objective-c,Objective C,我正在学习目标C。一些相当不同的语法;我不明白他们为什么要重新发明东西,该死的 我想我是直截了当的。实例方法是必须创建类的实例才能使用这些方法的方法。以减号进行。类方法是不必创建类实例的方法。以加号进行 那么,编写一个您不打算用可以在任何地方使用的方法实例化的类是否合适呢?有点像你程序的一组通用工具?只要我坚持MVC方法论 我正在学习目标C。有些相当不同 句法;我不明白他们为什么要重新发明东西,该死的 记住Objto-C最初是在1983,与C++相同的一年创建的。所以,这不是真正的改造,至少是你

我正在学习目标C。一些相当不同的语法;我不明白他们为什么要重新发明东西,该死的

我想我是直截了当的。实例方法是必须创建类的实例才能使用这些方法的方法。以减号进行。类方法是不必创建类实例的方法。以加号进行

那么,编写一个您不打算用可以在任何地方使用的方法实例化的类是否合适呢?有点像你程序的一组通用工具?只要我坚持MVC方法论

我正在学习目标C。有些相当不同 句法;我不明白他们为什么要重新发明东西,该死的

记住Objto-C最初是在1983,与C++相同的一年创建的。所以,这不是真正的改造,至少是你可能习惯的语言。事实上,它可能早于上述许多语言。Objective-C深受Smalltalk的启发,但我认为您会发现Smalltalk语法更加陌生

实例方法是必须在其中创建 类来使用这些方法。以减号进行。一个类方法是 一种不必创建类实例的方法。进行 加号

是的,你基本上是直截了当的。类方法的声明/定义以“+”开头,可以对类本身而不是类的实例进行调用。在Objective-C中,类本身就是对象。类方法无法访问实例变量(因为它们没有在实例上调用),但在其他情况下,它们是常规方法。实例方法只能在类的实例化实例上调用,并且可以访问该实例的内部状态(即其实例变量)

那么,编写一个您不打算编写的类是否合适呢 使用您可以在任何地方使用的方法进行实例化


当然,这不是不合理的。这是不是一个好主意是另一个问题。我认为很多时候使用正则函数比使用类方法更合适。类方法通常用于方便方法(如工厂方法),以配置该类的所有实例的全局/默认行为,以及诸如此类的事情。

Fun fact;Java——以及其中的所有派生——都直接受到Objective-C的启发,直接提升了许多设计模式。如果要创建一个只包含类方法而不包含实例方法的类(因此不应该实例化),我建议标记
alloc
init
,和
initWithZone:
具有
属性的方法((不可用(“该类无法实例化”))语法不同,因为不同于C++,所有有效的C代码也是有效的Objto-C,并且相同的代码在Objto-C中做了同样的事情,就像在C.中一样,使语法成为可能,语法声明,方法声明,方法调用,etc-必须以某种方式进行限定,以便它们不会与现有的C语法冲突。因此,所有的@ s,+s,-s,[s ]等C++,在许多方面,与C完全不同的语言,尽管名称和表面上相似的语法。“类C语法”并不意味着“类C语言”。