Dav*_*büz 3 xamarin.ios ios ios-simulator
我在执行下面的代码时收到此错误
无法创建本机类型' NSObject ' 的实例,可以通过将Class.ThrowOnInitFailure设置为false来忽略此条件
var alert=new UIAlertView("Error","Something missing !"
,new UIAlertViewDelegate(),"OK",null);
Run Code Online (Sandbox Code Playgroud)
我只为最新的iOS 6模拟器收到此错误.对于我的iOS 5设备,它按预期工作.
这是因为最近修改了Xamarin.iOS.
传统上,MonoTouch允许在没有本地对等体的情况下创建托管对象.然而,行为在类型之间是不一致的,并且在来自第三方库的类型的情况下,它将导致实例,如果使用这些实例,则很可能使进程因堆栈溢出而崩溃.因此,默认行为已更改:如果无法为托管对象创建本机对等方,则将引发异常.由于异常消息还提到此行为由值MonoTouch.ObjCRuntime.Class.ThrowOnInitFailure控制 - 将其设置为false以返回旧行为.
在您的情况下,您将获得异常,因为您在没有相应的Objective-C类时尝试创建UIAlertViewDelegate实例(因为UIAlertViewDelegate它是Objective-C协议,而不是Objective-C类).
解决方案很简单,正如user1010710已经提到的那样,只需使用null而不是new UIAlertViewDelegate().结果是相同的:在以前版本的Xamarin.iOS中,最终会得到一个托管的UIAlertViewDelegate实例,其Handle是IntPtr.Zero - 并且IntPtr.Zero值将传递给本机构造函数.这正是你通过时会发生的事情null.
| 归档时间: |
|
| 查看次数: |
1531 次 |
| 最近记录: |