目标C - 类方法,实例方法

Del*_*unt 0 objective-c

我正在学习Objective C.一些相当不同的语法; 我不明白为什么他们不得不重新发明东西,弄清楚它们.

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

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

And*_*sen 8

我正在学习Objective C.一些相当不同的语法; 我不明白为什么他们不得不重新发明东西,弄清楚它们.

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

实例方法是必须创建类的实例才能使用方法的方法.以减号进行.类方法是您不必创建类实例的方法.由加号进行.

是的,你基本上就是这样.可以在类本身而不是类的实例上调用其声明/定义以"+"开头的类方法.在Objective-C中,类本身就是对象.类方法不能访问实例变量(因为它们不是在实例上调用的),但除此之外,它们是常规方法.实例方法只能在类的实例化实例上调用,并且可以访问该实例的内部状态(即其实例变量).

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

当然,这并非不合理.这是一个好主意还是另一个问题.我认为很多时候使用常规函数而不是类方法更适合这种事情.类方法通常用于方便方法(如工厂方法),以配置该类的所有实例的全局/默认行为,以及类似的东西.