In Objective-C werden häufig für Delegate-Deklaration verwendet.Unterschied zwischen ID <protocol> und NSObject <protocol>
Was sind die Hauptunterschiede zwischen ID und NSObject? Wann möchten Sie einen gegen den anderen verwenden?
In Objective-C werden häufig für Delegate-Deklaration verwendet.Unterschied zwischen ID <protocol> und NSObject <protocol>
Was sind die Hauptunterschiede zwischen ID und NSObject? Wann möchten Sie einen gegen den anderen verwenden?
id<protocol> obj
ist die Deklaration für jedes Objekt, das dem angegebenen Protokoll entspricht. Sie können jede Nachricht vom angegebenen Protokoll an das Objekt senden (oder von den Protokollen , die <protocol>
erbt).
NSObject<protocol> *obj
ist die Erklärung für jedes Objekt, das
NSObject
abgeleitet.Das bedeutet, dass im zweiten Fall können Sie alle Methoden aus der NSObject
Klasse an das Objekt senden, zum Beispiel
id y = [obj copy];
, die ein Compiler-Fehler im ersten Fall geben würden.
Die zweite Deklaration bedeutet auch, dass obj
dem NSObject
Protokoll entspricht. Aber das macht keinen Unterschied, ob <protocol>
aus dem NSObject Protokoll abgeleitet:
@protocol protocol <NSObject>
Danke Martin. Also ID
@Boon: Nein. * "Dies macht keinen Unterschied" * gilt nur für den letzten Teil der Antwort, dass sowohl 'id
Hab es, danke. – Boon
Hilfreiche http://stackoverflow.com/questions/466777/whats-the-difference-between-declaring-a-variable-id- and-nsobject – Maulik
Dies ist kein Duplikat, weil "id 'vs' NSObject * '" und "' id vs NSObject * "' sind signifikant verschiedene Fragen. Abstimmung zum erneuten Öffnen –
Martin hat recht, es ist nicht dasselbe. – Boon