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