0
我有一個本機庫的下列協議,我試圖爲它編寫一個MonoTouch綁定(它也有一個名爲Brsp的接口部件)。MonoTouch自定義綁定不適用於委託中的某些方法
@protocol BrspDelegate <NSObject>
@required
- (void)brsp:(Brsp*)brsp OpenStatusChanged:(BOOL)isOpen;
- (void)brsp:(Brsp*)brsp SendingStatusChanged:(BOOL)isSending;
@optional
- (void)brspDataReceived:(Brsp*)brsp;
- (void)brsp:(Brsp*)brsp ErrorReceived:(NSError*)error;
- (void)brspModeChanged:(Brsp*)brsp BRSPMode:(BrspMode)mode;
@end
MonoTouch的綁定:
[BaseType(typeof(NSObject))]
[Model]
interface BrspDelegate
{
[Abstract]
[Export("brsp:OpenStatusChanged:"), EventArgs("OpenStatus")]
void OpenStatusChanged(Brsp brsp, bool isOpen);
[Abstract]
[Export("brsp:SendingStatusChanged:"), EventArgs("SendingStatus")]
void SendingStatusChanged(Brsp brsp, bool isSending);
[Export("brspDataReceived:")]
void DataReceived(Brsp brsp);
[Export("brsp:ErrorReceived:"), EventArgs("Error")]
void ErrorReceived(Brsp brsp, NSError error);
[Export("brspModeChanged:"), EventArgs("Mode")]
void ModeChanged(Brsp brsp, BrspMode mode);
}
開放狀態,發送狀態和錯誤接收方法被調用,但是模式改變不起作用。所以委託在Brsp類中被引用,所以這部分應該工作。有一點我得到了modechanged也工作,所以我知道這是所謂的當我調用BPSP類「changeMode」。但後來我搞砸了,現在它不再工作了...
此外,現在我使用委託私人類,而不是基於事件的方法。因爲當我嘗試爲上述方法之一連接生成的事件時,應用程序崩潰而沒有任何MonoTouch的錯誤或警告。
我懷疑自己是不是用綁定100%正確的,所以該方法不膠合在一起的權利,但我已經嘗試了許多,許多不同的事情,據我所知這應該工作...
任何想法?
這有助於模式!我以爲我已經嘗試過,但在做了這麼多事情之後,我可能忽略了它。 – Rogier
任何想法爲什麼事件處理程序崩潰應用程序? – Rogier
@Rogier EventArgs不會崩潰你的應用程序,而不是在你的綁定上''導出'正確的'選擇器名稱'確實會使應用程序崩潰,因爲MTouch在ObjC世界上找不到正確的符號名稱。 – dalexsoto