Ich habe gelesen, dass Sie versuchen sollten, @class
in Ihrer Headerdatei anstelle von #import
zu verwenden, aber das funktioniert nicht, wenn Ihr @class
ein Delegatprotokoll enthält, das Sie versuchen benutzen.Verwenden von @class, um Zugriff auf eine Delegatprotokolldeklaration zu erhalten
MyView.h
#import <UIKit/UIKit.h>
@class MyCustomClass; // <-- doesn't work for MyCustomClassDelegate, used below
@interface MyView : UIView <MyCustomClassDelegate>
@end
Ich glaube, ich bin mit Blick auf etwas, ist es eine Möglichkeit, @class
zu bekommen in dieser Situation zu arbeiten, oder ist #import
meine einzige Wahl?
Bearbeiten: Eine davon umgehen, ist natürlich, Ihre #import MyCustomClass und MyCustomClassDelegate im privaten Schnittstelle Abschnitt der .m-Datei anstelle der .h-Datei.
Nicht Pits einstufen, aber um genauer zu sein: Sie können ein Protokoll weiterleiten, aber nicht, wenn Sie eine Klasse deklarieren, die diesem Protokoll entspricht (in dieser Header-Datei). Wenn das Protokoll nur für eine Methodenrückgabe oder einen Parametertyp benötigt wird, können Sie es deklarieren (und dazu "@protocol MyProtocol;" statt "@class MyProtocol;" verwenden). – erikprice
Aktualisiert, danke für die Klarstellung! – Senseful