类方法和实例方法有什么区别?


问题内容

类方法和实例方法有什么区别?

实例方法是访问器(getter和setter)而类方法是其他所有东西吗?


问题答案:

就像大多数其他答案所说的那样,实例方法使用类的实例,而类方法只能与类名一起使用。因此在Objective-C中对它们进行了定义:

@interface MyClass : NSObject

+ (void)aClassMethod;
- (void)anInstanceMethod;

@end

然后可以像这样使用它们:

[MyClass aClassMethod];

MyClass *object = [[MyClass alloc] init];
[object anInstanceMethod];

一些真实世界的类方法的例子是很多基础类,如方便的方法NSString+stringWithFormat:NSArray+arrayWithArray:。实例方法将是NSArray-count方法。