Kann ich in einer Objective-C-Schnittstelle eine Variable vom Typ 'Protokoll' deklarieren?

8

Meine Idee ist sehr ähnlich, eine Variable eines Interface-Typs in Java zu deklarieren.

Also zum Beispiel

Header-Datei 1:

%Vor%

Ich definiere dann ein @interface CalculatorImpl welches das obige Calculator Protokoll implementiert.

In Header-Datei 2:

%Vor%

Der xcode markiert jedoch einen Fehler in der Rechnerzeile

%Vor%

Ist diese Verwendung des Protokolls von objective-c nicht erlaubt?

    
Anthony Kong 20.02.2012, 12:11
quelle

2 Antworten

18

A @protocol ist kein Typ, Sie können ihn daher nicht für den Typ von @property verwenden.

Was Sie wahrscheinlich stattdessen tun möchten, ist dies:

%Vor%

Dies deklariert eine Eigenschaft ohne Einschränkung für ihren Typ, außer dass sie dem Calculator -Protokoll entspricht.

    
yuji 20.02.2012, 12:14
quelle
4

Sie sollten

verwenden %Vor%

In Objective-C können Sie ein Protokoll nicht instanziieren, Sie können es nur anpassen. Anstatt also ein Objekt vom Typ Calculator zu verwenden, sollten Sie ein generisches Objekt haben, das dem Calculator Protokoll entspricht.

Ansonsten können Sie

verwenden %Vor%

seit CalculatorImpl ist eine Schnittstelle, kein Protokoll.

    
Saphrosit 20.02.2012 12:13
quelle

Tags und Links