2013-01-13 4 views
2
충돌

내가 가지고 다음과 같은 바인딩 블루투스 BLE 장치 바인딩 :생성 된 바인딩 이벤트는 MonoTouch

[BaseType (typeof (CBPeripheralDelegate), Delegates=new string [] {"WeakDelegate"}, 
Events=new Type [] { typeof (BrspDelegate) })] 
interface Brsp 
{ 
    //@property (nonatomic, weak) id <BrspDelegate> delegate; 
    [Export ("delegate")] 
    [NullAllowed] 
    BrspDelegate Delegate { get; set; } 

    [Wrap ("WeakDelegate")] 
    [NullAllowed] 
    NSObject WeakDelegate { get; set; } 

    ...other stuff 

} 

을 그리고 다음 대표 :

[BaseType(typeof(NSObject))] 
    [Model] 
    interface BrspDelegate 
    { 
     [Abstract] 
     [Export("brsp:OpenStatusChanged:"), EventArgs("OpenStatus")] 

     ...other stuff 
    } 

나는에 대한 생성 된 이벤트 핸들러를 연결하는 경우 openstatuschanged, 그것은 즉시 응용 프로그램을 충돌하고 나는 무엇이 잘못 될 수 있는지 전혀 의견을 얻지 못합니다. 나는 여전히 구속력있는 초보자입니다. ...

나는 어떻게 든 "Events = ..."부분, 어떤 생각으로 실수를했는지 느낌이 들었습니까?

감사합니다,

로지에 (Rogier) 자세한 내용은 (예를 들어, symbolicated 충돌 로그)하지만 바인딩의 일부없이 말할 하드

답변

2

는 반전 (그 앱을 충돌합니다 무한 재귀가 발생할 수 있습니다).

  • 당신의 Delegate 방법은 (WeakDelegate에서) [Wrap] 속성을 가져야한다;
  • WeakDelegate 메서드는 delegate 선택자에 [Export] 특성이있는 메서드 여야합니다.

예.

[Wrap ("WeakDelegate")] 
    StronglyTypedDelegate Delegate { get; set; } 

    [Export ("delegate")][NullAllowed] 
    NSObject WeakDelegate { get; set; } 
+0

이것은 정확히 문제가되었습니다. 나는이 부분에서 조금 의아해했고 아마도 코드를 복사/적용 할 때 실수를 범했습니다. RTFM은 Xamarin 문서에 올바르게 표시되어 있습니다. 감사! – Rogier

관련 문제