2016-06-30 14 views
0

Wie Sie wissen, wenn wir ein Protokoll anwenden, die einen Delegaten deklarieren müssen.Verwenden Sie schwache Eigenschaft nicht wie ein Protokoll

@property (weak) id<NameOfProtocol> delegate; 

Aber zeigt Xcode die Fehlermeldung, wenn ich so erklären (nicht-Protokoll verwenden)

@property (weak) id<NameOfObject> pointer; 

Was mit diesem falsch? So

+0

setzen Sie den Code Ihrer Kopf – ronan

Antwort

2

, wenn Sie gehen

@property (weak) id<NameOfProtocol> delegate; 

Sie sagen, ich eine Variable wollen, die irgendeine Art Punkte, die NameOfProtocol entspricht. Sie brauchen es ein id Typ zu sein, weil Sie wirklich nicht wissen, was die Variablen-Typ (und Sie nicht Sorge, solange es implementiert die Methoden von NameOfProtocol)

während

@property (weak) id<NameOfObject> pointer; 

doesnt machen sein wird Sinn, weil Sie sagen, ich möchte eine Variable, aber ich weiß nicht, die Art, deshalb brauche ich id aber es entspricht NameOfObject ... das ist widersprüchlich, da Sie den Typ

haben daher sollten Sie nur eine normale schwache Variable in Dieser Fall

@property (weak) NameOfObject *pointer; 
+0

Thank Datei oben für Ihre erklären :). Ich verstand –

+0

kein Problem, sollte es als die Antwort markieren, wenn es geholfen hat – Fonix

1

@property (weak) id<NameOfProtocol> delegate; bedeutet die Variable jeder Art sein kann, wenn es

@property (weak) id<NameOfObject> pointer; bedeutet die Variable beliebiger Typ sein kann, um NameOfProtocol anpaßt, aber es muss Typ NameOfObject

so dass es keinen Sinn haben;

statt @property (weak) NameOfObject *pointer;