Каково различие между "+" и "-" перед объявлением интерфейса имени функции в программе Objective C. Пример:
- (void)continueSpeaking;
+ (NSArray *)availableVoices;
Какая разница?
+
определяет метод класса
Методы класса принадлежат самому классу , а не экземплярам класса.
Пример: [AppDelegate someMethod]
-
определяет метод экземпляра
Пример [[[UIApplication sharedApplication] делегат] someMethod]
Один из способов описать разницу: что методы -
работают с объектами, а методы +
работают с самим классом.
Допустим, ваш класс получил имя MyClass
, и вы создали его экземпляр и сохранили его в переменной с именем myInstance
:
- (void) continueSpeaking
can называться так: [myInstance continueSpeaking]
.
Однако метод + (NSArray *) availableVoices
можно вызвать только так: [MyClass availableVoices]