我有一個類用作轉發代理的通用代理。通過執行respondsToSelector
和forwardInvocation
我可以使用這個類來轉發選擇器,這些選擇器可以發送給各種UI控件的代理。用於協議的Objective-C代理Xcode編譯器警告
問題是,當我使用這個類時,我得到一個編譯器警告。例如,如果我用它來郵件轉發到的UITableViewDelegate:
DelegateForwarder* _forward = [[DelegateForwarder alloc] init];
_tableView.delegate = _forward;
我得到的編譯器警告:
Assigning to id<UITableViewDelegate> from incompatible type 'DelegateForwarder'
我知道,因爲DelegateForwarder不採用UITableViewDelegate
委託生成警告,但我不希望它 - 因爲它提供的轉發機制是完全通用的。
儘管警告我的代碼按預期運行。
有什麼我可以做的,以某種方式表明它使用消息轉發的編譯器和這個類的用戶,所以它不採用特定協議的事實不是一個問題?
不完全確定自己在這裏,但'id _forward = [[DelegateForwarder alloc] init];'刪除警告? –
@PhillipMills你是一個天才 - 是的,它確實:-) - 如果你可以擴展爲什麼這個作爲問題的答案,我會upvote和接受。 – ColinE