當我使用LLVM Compiler 2.0時,我似乎遇到了新的錯誤,這是我之前沒有的。重寫符合協議的屬性
我有一個名爲DTGridViewDelegate協議定義爲:
@protocol DTGridViewDelegate <UIScrollViewDelegate>
我有一個名爲delegate
on DTGridView屬性(的UIScrollView的一個子類,其本身具有delegate
屬性)。這被定義爲:
@property (nonatomic, assign) IBOutlet id<DTGridViewDelegate> delegate;
現在我得到的消息是:
DTGridView.h:116:63: error: property type 'id<DTGridViewDelegate>' is incompatible with type 'id<UIScrollViewDelegate>' inherited from 'UIScrollView'
因爲我曾表示,DTGridViewDelegate符合UIScrollViewDelegate,我認爲這將是確定以覆蓋這個屬性就是這樣的,實際上這是第一個編譯器提示有問題。
@property (nonatomic, assign) IBOutlet id<DTGridViewDelegate, UIScrollViewDelegate> delegate;
我想知道這是否是一個編譯器的問題:
我已經宣佈的財產爲這種固定的錯誤?
我從http://boredzo.org/blog/archives/2009-11-07/warnings開啓嚴格警告,使用Wolf的腳本:http://rentzsch.tumblr.com/post/237349423/hoseyifyxcodewarnings-scpt。這可能解釋了爲什麼你沒有看到警告/錯誤。 – 2011-03-05 15:04:40
雖然你完全正確,但我忘記了UITableViewDelegate,我首先將該代碼作爲基礎!在我看來,第一種方式不應該爲此發出警告。另外,我覺得很奇怪,UITableViewDelegate表示它符合NSObject,當它符合UIScrollViewDelegate時,它本身也符合NSObject。 – 2011-03-05 15:13:46
因此,在與@MikeAbdullah進一步討論後,事實證明我需要在類接口之前放置協議聲明。在編譯器到達我的屬性聲明時,@protocol DTGridViewDelegate並不是說它符合。 –
2011-03-06 18:52:38