22

可能重复:
Objective C 中方法旁边的加号和减号是什么意思?

在 Objective-C 中使用加号或减号有什么区别?

例如,大部分时间代码开始-(void)somethingSomethingelse,但有时它会+(void)somethingSomethingelse

谢谢!

4

3 回答 3

34

-函数是实例函数,+函数是类(静态)函数。

因此,假设您有一个名为 的类Person,以及以下函数

-(void)doSomething;

+(void)doSomethingElse;

您可以使用以下命令调用这些函数:

Person *myPerson = [[Person alloc] init];

[myPerson doSomething];

[Person doSomethingElse];

假设您了解类与实例的概念,这更像是一种语法描述。

编辑:

只是补充一点:在objective-C中,您实际上可以在实例上调用类函数,但效果与在类本身上调用它没有什么不同(本质上编译成相同的东西)。

所以你可以做

[myPerson doSomethingElse]

一般来说,你不会这样做,因为它会让人困惑和误导阅读。我指出这一点,因此如果您在某处遇到这样的代码,您不会感到惊讶。

于 2012-06-08T18:23:57.860 回答
30

简而言之,(+)是类方法,(-)是实例方法

有关完整说明,请参阅此答案 类方法和实例方法有什么区别?

于 2012-06-08T18:23:09.900 回答
6

成员和公共职能分别。

这样

id object = [[NSObject alloc] init];
+ (id)alloc;
- (id)init;

其中 NSObject 是一个类,id 是一个对象

如果你曾经使用过 C++,a + 相当于 static

于 2012-06-08T18:23:35.603 回答