La spiegazione definitiva di questo da parte di Apple è qui, sotto il 'Metodi e Messaging' sezione:
https://developer.apple.com/library/mac/referencelibrary/GettingStarted/RoadMapOSX/books/WriteObjective-CCode/WriteObjective-CCode/WriteObjective-CCode.html
In breve:
+ significa 'metodo di classe'
(il metodo può essere chiamato senza un'istanza della classe istanziata). Così si chiama in questo modo:
[className classMethod];
- significa 'metodo di istanza'
È necessario creare un'istanza di un oggetto prima, allora si può chiamare il metodo sull'oggetto).È possibile creare un'istanza manualmente un oggetto come questo:
SomeClass* myInstance = [[SomeClass alloc] init];
(questo assegna essenzialmente spazio di memoria per l'oggetto poi initalises l'oggetto in quello spazio - una semplificazione eccessiva, ma un buon modo di pensare a questo proposito È possibile alloc e init. l'oggetto separatamente ma mai fare questo - può portare a problemi di cattivi legati alla puntatori e gestione della memoria)
quindi chiamare il metodo di istanza:
[myInstance instanceMethod]
Un modo alternativo per ottenere un'istanza di un oggetto in Objective C è come questo:
NSNumber *myNumber = [NSNumber numberWithInt:123];
che chiede la 'numberWithInt' metodo di classe della classe NSNumber, che è un metodo di 'fabbrica' (vale a dire un metodo che ti fornisce una "istanza pronta" di un oggetto).
Objective C permette inoltre la creazione di alcune istanze di oggetti direttamente utilizzando la sintassi speciale, come nel caso di una stringa come questa:
NSString * myStringInstance = @ "abc";
fonte
2015-10-15 20:46:04
È quasi come se i cinque caratteri extra di "statico" fossero in qualche modo troppo per loro. –
Collegamento a documenti: http://developer.apple.com/mac/library/DOCUMENTATION/Cocoa/Conceptual/ObjectiveC/Articles/ocDefiningClasses.html#//apple_ref/doc/uid/TP30001163-CH12-TPXREF122 – Seth
@Seth: Grazie, stavo cercando quel link ma non l'ho trovato. –