2013-02-28 55 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

相關問題