Objective-C中是否有static方法

Objective-C中确实存在static方法。static方法是类方法(class method)的一种,与实例方法(instance method)相对。

实例方法

实例方法是针对类实例对象的方法,通过发送消息给实例来调用:

Person *p = [[Person alloc] init]; 
[p eat];

需要先创建实例才能调用实例方法。

类方法(static方法)

类方法(也称为静态方法)是针对类本身的方法,通过类名直接调用:

[Person eat];

类方法通常用来创建实例对象。

类方法的声明使用+号:

+ (id)personWithName:(NSString*)name;

static关键字

可以使用static来修饰类方法,限制其作用域:

+ (void)privateMethod {
  //...
}

static + (void)privateMethod2 {
  //... 
}

privateMethod2只能在实现文件的类内部访问。

使用场景

类方法适用于无状态的工具函数或创建实例对象的工厂方法。

综上所述,Objective-C是支持类方法(static方法)的,与实例方法有不同的使用场景。