你如何绑定或调用基础功能?

时间:2011-07-01 00:15:21

标签: objective-c ios xamarin.ios

我感兴趣的是绑定到iOS基础功能,如iOS documentation中所示,但是没有任何句柄或实例可以发送消息来调用它们。我如何使用MonoTouch执行此操作?我认为它会涉及MonoTouch.ObjCRuntime命名空间中的某些内容。

1 个答案:

答案 0 :(得分:4)

所有MonoTouch的NS *对象都实现了MonoTouch.ObjCRuntime.INativeObject接口,该接口有一个名为“Handle”的属性getter。这个访问器在NSObject和所有子类上是公共的。

编辑:绑定NSSetUncaughtExceptionHandler()的代码将是这样的:

public delegate void NSUncaughtExceptionHandler (IntPtr exception);

[DllImport ("/System/Library/Frameworks/Foundation.framework/Foundation")]
extern static void NSSetUncaughtExceptionHandler (IntPtr handler);

然后你可以像这样使用它:

static void MyUncaughtExceptionHandler (IntPtr exception)
{
    // Got an exception... 
}

static void Main (string[] args)
{
    NSSetMyUncaughtExceptionHandler (Marshal.GetFunctionPointerForDelegate(
        new NSUncaughtExceptionHandler(
            MyUncaughtExceptionHandler
        )
    );
}