Objective c 类方法和实例方法

Objective c 类方法和实例方法,objective-c,Objective C,类方法是静态方法吗?这个论点正确吗?所以如果我们声明NSString,因为alloc是一个类方法 NSString*hello=[[NSString alloc]init]; 类方法 [你好IsequalString:@“你好”]; 实例方法在面向对象编程中类方法是应用于类而非其特定实例(即该类的对象)的方法/函数。实例方法是直接对对象调用的方法 在某些语言中,每个类都由类对象表示,因此类方法是该对象的实例方法。这对于应用反射和内省很有用 在objective-c中,类方法是通过在其声明之前使用

类方法是静态方法吗?这个论点正确吗?所以如果我们声明NSString,因为alloc是一个类方法

NSString*hello=[[NSString alloc]init]; 类方法

[你好IsequalString:@“你好”];
实例方法

面向对象编程中类方法是应用于类而非其特定实例(即该类的对象)的方法/函数。实例方法是直接对对象调用的方法

在某些语言中,每个类都由类对象表示,因此类方法是该对象的实例方法。这对于应用反射和内省很有用

在objective-c中,类方法是通过在其声明之前使用符号
+
来定义的,而实例方法则在它们之前使用符号
-
。以下是一个例子:

@interface Rectangle : NSObject

    + (void)join:(Rectangle *)firstRect withAnother:(Rectangle *)secondRect;
    - (void)area;

@end
当您不需要引用特定对象,或者您必须更改所有对象,或者您只需要为与实例对象无关的函数指定一个位置时,经常使用类方法

你在问题中说了
静态
。您可能指的是像Java这样的语言,它们的关键字static位于类方法声明之前。在objective-c中,关键字static的含义与之相同

作为参考,您可以查看或在.

< P>中,您可以将类方法视为类似于C++中的“代码>静态< /Cult>方法”,如

[NSString alloc]  <=>  /* hypothetical */ NSString::alloc()
[NSString alloc]/*假设的*/NSString::alloc()
但在幕后,存在着重大差异。例如,在C++ <代码>静态< /代码>方法中,不能使用<代码>此< /代码>;在Objective-C类方法中,
self
完全有效,并引用类对象