Полное объяснение этого от Apple здесь, в разделе «Методы и обмен сообщениями»:
https://developer.apple.com/library/mac/referencelibrary/GettingStarted/RoadMapOSX/books/WriteObjective-CCode/WriteObjective-CCode/WriteObjective-CCode.html
Вкратце:
+ означает «метод класса»
(метод может быть вызван без создания экземпляра класса). Итак, вы называете это так:
[className classMethod];
- означает «метод экземпляра»
Сначала вам нужно создать экземпляр объекта, затем вы можете вызвать метод объекта). Вы можете вручную создать объект, подобный этому:
SomeClass* myInstance = [[SomeClass alloc] init];
(это по существу выделяет пространство памяти для объекта, а затем инициализирует объект в этом пространстве - упрощение, но хороший способ думать об этом. Вы можете выделять и инициировать объект отдельно, но никогда этого не делает - это может привести к неприятным проблемам, связанным с указателями и управлением памятью)
Затем вызовите метод экземпляра:
[myInstance instanceMethod]
Альтернативный способ получить экземпляр объекта в Objective C такой:
NSNumber *myNumber = [NSNumber numberWithInt:123];
, который вызывает метод 'numberWithInt' класса класса NSNumber, который является методом "фабрики" (т. Е. Методом, который предоставляет вам "готовый экземпляр" объекта).
Objective C также позволяет создавать определенные экземпляры объектов напрямую, используя специальный синтаксис, как в случае строки, подобной этой:
NSString * myStringInstance = @ "abc";