在 Objective-C 中使用加号或减号有什么区别?
例如,大部分时间代码开始-(void)somethingSomethingelse
,但有时它会+(void)somethingSomethingelse
谢谢!
在 Objective-C 中使用加号或减号有什么区别?
例如,大部分时间代码开始-(void)somethingSomethingelse
,但有时它会+(void)somethingSomethingelse
谢谢!
-
函数是实例函数,+
函数是类(静态)函数。
因此,假设您有一个名为 的类Person
,以及以下函数
-(void)doSomething;
+(void)doSomethingElse;
您可以使用以下命令调用这些函数:
Person *myPerson = [[Person alloc] init];
[myPerson doSomething];
[Person doSomethingElse];
假设您了解类与实例的概念,这更像是一种语法描述。
编辑:
只是补充一点:在objective-C中,您实际上可以在实例上调用类函数,但效果与在类本身上调用它没有什么不同(本质上编译成相同的东西)。
所以你可以做
[myPerson doSomethingElse]
一般来说,你不会这样做,因为它会让人困惑和误导阅读。我指出这一点,因此如果您在某处遇到这样的代码,您不会感到惊讶。
简而言之,(+)是类方法,(-)是实例方法
有关完整说明,请参阅此答案 类方法和实例方法有什么区别?
成员和公共职能分别。
这样
id object = [[NSObject alloc] init];
+ (id)alloc;
- (id)init;
其中 NSObject 是一个类,id 是一个对象
如果你曾经使用过 C++,a + 相当于 static