目标C中的加号和减号在方法旁边意味着什么?

我在目标c和xcode中都很新。 我想知道方法定义旁边的+-符号是什么意思。

 - (void)loadPluginsAtPath:(NSString*)pluginPath errors:(NSArray **)errors; 

+用于类方法, -用于实例方法。

例如

 // Not actually Apple's code. @interface NSArray : NSObject { } + (NSArray *)array; - (id)objectAtIndex:(NSUInteger)index; @end // somewhere else: id myArray = [NSArray array]; // see how the message is sent to NSArray? id obj = [myArray objectAtIndex:4]; // here the message is sent to myArray // Btw, in production code one uses "NSArray *myArray" instead of only "id". 

还有一个问题涉及类和实例方法之间的区别 。

(+)类方法和( – )例如方法,

(+)类方法: –

被声明为静态的方法 该方法可以在不创build类的实例的情况下被调用。 类方法只能对类成员进行操作,而不能对实例成员进行操作,因为类方法不了解实例成员。 除非在类的实例上调用类,否则类的实例方法也不能从类方法中调用。

( – )实例方法: –

另一方面要求类的实例在可以被调用之前存在,所以需要使用new关键字创build一个类的实例。 实例方法对类的特定实例进行操作。 实例方法没有被声明为静态的。

+方法是类方法 – 也就是没有访问实例属性的方法。 用于像alloc或helper方法那样的方法,不需要访问实例variables

– 方法是实例方法 – 与一个对象的单个实例相关。 通常用于一个类的大多数方法。

请参阅语言规范了解更多详细信息。

在这里,在“方法和消息”部分中,对苹果的这个明确的解释是:

https://developer.apple.com/library/mac/referencelibrary/GettingStarted/RoadMapOSX/books/WriteObjective-CCode/WriteObjective-CCode/WriteObjective-CCode.html

简单来说:

+表示“类方法”

(方法可以被调用,而不需要被实例化的类的实例)。 所以你这样称呼它:

 [className classMethod]; 

– 意思是“实例方法”

你需要首先实例化一个对象,然后你可以调用对象的方法)。 你可以像这样手动实例化一个对象:

 SomeClass* myInstance = [[SomeClass alloc] init]; 

(这基本上为对象分配内存空间,然后在这个空间中生成对象 – 这是一个过分简化的过程,而是一个很好的思考方式, 你可以单独地分配和初始化对象,但从不这样做 – 这会导致与指针有关的讨厌问题和内存pipe理)

然后调用实例方法:

 [myInstance instanceMethod] 

在Objective C中获取对象实例的另一种方法是这样的:

 NSNumber *myNumber = [NSNumber numberWithInt:123]; 

它调用NSNumber类的'numberWithInt' 类方法 ,这是一个“工厂”方法(即为您提供一个对象的“现成实例”的方法)。

Objective C还允许直接使用特殊的语法来创build特定的对象实例,就像这样的string:

NSString * myStringInstance = @“abc”;

客观的C编程指南是很好的资源