私は pony Debugger のバインディングを書いていますが、これはかなり単純なはずです。
Pony は、クラス メンバー「defaultInstance」を介してアクセスされます
@interface PDDebugger : NSObject
+ (PDDebugger *)defaultInstance;
私はこのように実装しました:
[assembly: LinkWith ("libPonyDebugger.a", LinkTarget.Simulator, ForceLoad = true)]
namespace PonyDebugger
{
[BaseType (typeof (NSObject))]
interface PDDebugger
{
[Static] [Export ("defaultInstance")]
PDDebugger DefaultInstance { get; }
[Export ("enableViewHierarchyDebugging")]
PDDebugger EnableViewHierarchyDebugging();
}
}
バインディングを正常にコンパイルできますが、「PDDebugger.DefaultInstance」を呼び出すと、null が返されます。私は何が欠けていますか?
メッセージが基になる ObjC オブジェクトに渡されていることを確認するにはどうすればよいでしょうか?
ありがとう!
[編集] バインディングを次のように更新しました。MonoTouch.Foundation の使用; MonoTouch.ObjCRuntime の使用;
** libPonyDebugger.linkwith.cs **
[assembly: LinkWith ("libPonyDebugger.a", LinkTarget.Simulator, ForceLoad = true,
Frameworks = "Security CFNetwork Foundation CoreGraphics UIKit CoreData", LinkerFlags = "-ObjC -licucore")]
namespace PonyDebugger
{
[BaseType (typeof (NSObject), Name="PDDebugger")]//, DisableDefaultCtor]
interface PDDebugger
{
//+ (PDDebugger *)defaultInstance;
[Static, Export ("defaultInstance")]
PDDebugger DefaultInstance();
[Export ("enableViewHierarchyDebugging")]
PDDebugger EnableViewHierarchyDebugging();
}
}
** libSocketRocket.linkwith.cs **
using System;
using MonoTouch.ObjCRuntime;
[assembly: LinkWith ("libSocketRocket.a", LinkTarget.ArmV7 | LinkTarget.Simulator,
Frameworks = "Security CFNetwork Foundation CoreGraphics UIKit CoreData", ForceLoad = true, LinkerFlags = "-ObjC -licucore")]
そして、それはすべてネイティブに btouches/コンパイルして実行しますが、 PDDebugger.DefaultInstance() はまだ null を返します。