我讀過你應該嘗試在你的頭文件中使用@class
而不是#import
,但是當你的@class
包含你正在嘗試的委託協議時,這不起作用使用。使用@class訪問委託協議聲明
MyView.h
#import <UIKit/UIKit.h>
@class MyCustomClass; // <-- doesn't work for MyCustomClassDelegate, used below
@interface MyView : UIView <MyCustomClassDelegate>
@end
我想我忽視的東西,有沒有辦法讓@class
在這種情況下工作,或者是#import
我唯一的選擇?
編輯:解決此問題的一個方法是,在.m文件的專用接口部分中聲明您的#import MyCustomClass和MyCustomClassDelegate,而不是.h文件。
不是爲了剔除坑,而是更確切地說:你可以轉發 - 聲明一個協議,但是如果你聲明瞭一個符合該協議的類(在該頭文件中),則不能。如果協議僅用於方法返回或參數類型,那麼聲明它就可以了(並且您使用「@protocol MyProtocol;」而不是「@class MyProtocol;」來執行此操作)。 – erikprice
更新,謝謝澄清! – Senseful