Разница между "+" и "-" перед именем функции в Objective-C

В чем разница между "+" и "-" перед объявлением интерфейса имени функции в программе Objective-C. Пример:

- (void)continueSpeaking;

+ (NSArray *)availableVoices;

Какая разница?

Ответы

Ответ 1

+ определяет метод класса

Методы класса относятся к классу class, а не экземплярам класса.

Пример: [AppDelegate someMethod]

- определяет метод экземпляра

Пример [[[UIApplication sharedApplication] delegate] someMethod]

Один из способов описать разницу заключается в том, что методы - работают с объектами, а методы + работают с самим классом.

Скажите, что ваш класс был назван MyClass, и вы создали его экземпляр и сохранили его в переменной с именем myInstance:

- (void)continueSpeaking можно вызвать так: [myInstance continueSpeaking].

Однако метод + (NSArray *)availableVoices может быть вызван только так: [MyClass availableVoices]