2013-02-28 57 views
1

当创建与Monocross(使用MonoTouch的)一个简单的应用程序和编译的iOS设备上,我得到一些不好的警告,就像这样:Monocross是否准备好在iOS设备上专业使用?

警告MT4112:注册商发现了一个泛型类型:MonoCross.Touch.MXTouchViewController`1。不支持使用ObjectiveC注册泛型类型,并且会导致随机行为和/或崩溃。 (MT4112)。

我已阅读了关于在iOS设备上使用MonoTouch的泛型的所有信息,而且它大多不受支持。我的应用程序目前在实际设备上运行,但警告令我担心。

我想我的问题是,即使使用最简单的应用程序获得这些警告,Monocross的状态如何?它还没有准备好用于专业用途,还是警告与Monocross使用仿制药的方式不相关?

我还可以添加从Xamarin.iOS文档如下: “Xamarin.iOS目前不支持创建NSObject类的子类仿制”

这正是Monocross做,与例如MXTouchTableViewController类。

回答

4

有一些历史记录:创建NSObject的通用子类从来不是受支持的方案,但不幸的是,MonoTouch从未强制执行,也没有警告过这个事实。所以人们当然最终会这样做。然后有一天,我不得不寻找真正的heisenbug看起来像什么东西,事实证明(经过许多小时的调试令人沮丧)是因为有问题的项目使用NSObject的通用子类。确切的细节并不重要,但是当警告被添加到MonoTouch时。

我在这里指出的是人们已经使用NSObject的通用子类很长一段时间,没有遇到任何问题。如果您广泛测试您的应用程序(无论如何您都应该这样做),请不要担心这一点。

但是,如果遇到奇怪且难以理解的行为,我们很可能会要求您在查看任何声称在MonoTouch中发现错误之前修复这些警告。

+0

警告是否已更改回Xamarin.Monotouch 6.3.2中的异常?我得到一个'{MonoTouch.MonoTouchException:注册商发现无效类型Cirrious.MvvmCross.Dialog.Touch.MvxTouchDialogViewController 1 [[Core.AlertVM,ViewModelsiOS,版本= 1.0.4842.16906,Culture = neutral,PublicKeyToken = null]] 。不支持用ObjectiveC注册泛型类型。} \t MonoTouch.MonoTouchException' – Kevin 2013-04-04 08:24:55

+0

@Kevin:是的,它会回退,它将在以后的版本中修复。在此期间,您可以将“--registrar:oldstatic”传递给mtouch(在项目的iOS Build选项中的其他mtouch参数中)。 – 2013-04-04 11:15:49

相关问题