In Objective-C möchte ich wissen, was die Zeichen +
und -
neben einer Methodendefinition bedeuten.
- (void)loadPluginsAtPath:(NSString*)pluginPath errors:(NSArray **)errors;
objective-c
syntax
method-declaration
Gyurisc
quelle
quelle
@classmethod
und@method
oder so auch vorgezogen . Warum so knapp ...?(+) Klassenmethoden: -
Sind Methoden, die als statisch deklariert sind. Die Methode kann aufgerufen werden, ohne eine Instanz der Klasse zu erstellen. Klassenmethoden können nur für Klassenmitglieder und nicht für Instanzmitglieder ausgeführt werden, da Klassenmethoden keine Instanzmitglieder kennen. Instanzmethoden der Klasse können auch nicht innerhalb einer Klassenmethode aufgerufen werden, es sei denn, sie werden für eine Instanz dieser Klasse aufgerufen.
(-) Instanzmethoden: -
Auf der anderen Seite muss eine Instanz der Klasse vorhanden sein, bevor sie aufgerufen werden kann. Daher muss eine Instanz einer Klasse mit dem neuen Schlüsselwort erstellt werden. Instanzmethoden arbeiten mit bestimmten Instanzen von Klassen. Instanzmethoden werden nicht als statisch deklariert.
quelle
+ Methoden sind Klassenmethoden, dh Methoden, die keinen Zugriff auf die Eigenschaften einer Instanz haben. Wird für Methoden wie Zuordnungs- oder Hilfsmethoden für die Klasse verwendet, für die kein Zugriff auf Instanzvariablen erforderlich ist
- Methoden sind Instanzmethoden - beziehen sich auf eine einzelne Instanz eines Objekts. Wird normalerweise für die meisten Methoden einer Klasse verwendet.
Weitere Informationen finden Sie in der Sprachspezifikation .
quelle
self
, sondern die Klasse. Sie sind einfach keiner Instanz zugeordnet, und die Methodensuche erfolgt nicht über die Instanz, sondern über die Klasse. Trotzdem könnten Sie tun+exchangeIVarOf: (MYObject*)a with: (MYObject*)b { MYObject* x = a->ivar; a->ivar = b->ivar; b->ivar = x; }
Die endgültige Erklärung von Apple finden Sie hier im Abschnitt "Methoden und Messaging":
https://developer.apple.com/library/mac/referencelibrary/GettingStarted/RoadMapOSX/books/WriteObjective-CCode/WriteObjective-CCode/WriteObjective-CCode.html
In Kürze:
+ bedeutet 'Klassenmethode'
(Methode kann aufgerufen werden, ohne dass eine Instanz der Klasse instanziiert wird). Sie nennen es also so:
- bedeutet "Instanzmethode"
Sie müssen zuerst ein Objekt instanziieren, dann können Sie die Methode für das Objekt aufrufen. Sie können ein Objekt wie folgt manuell instanziieren:
(Dies ordnet im Wesentlichen Speicherplatz für das Objekt zu und initialisiert dann das Objekt in diesem Raum - eine übermäßige Vereinfachung, aber eine gute Möglichkeit, darüber nachzudenken. Sie können das Objekt separat zuweisen und initiieren , dies jedoch niemals tun. Dies kann zu unangenehmen Problemen im Zusammenhang mit Zeigern führen und Speicherverwaltung)
Rufen Sie dann die Instanzmethode auf:
Eine alternative Möglichkeit, eine Instanz eines Objekts in Ziel C abzurufen, lautet wie folgt:
welches der Aufruf der ‚numberWithInt‘ Klassenmethode der NSNumber - Klasse, die ein ‚Fabrik‘ Verfahren (dh einer Methode , die Sie mit einer ‚bereit gemacht Instanz‘ ein Objekt bereitstellt) ist.
Ziel C ermöglicht auch die Erstellung bestimmter Objektinstanzen direkt mit einer speziellen Syntax, wie im Fall einer Zeichenfolge wie dieser:
NSString * myStringInstance = @ "abc";
quelle