Не найден конструктор для ViewController ::. Ctor (System.IntPtr)

У меня проблема, из-за которой мое приложение Monotouch иногда дает сбой сразу после получения предупреждения о памяти. См. Эту трассировку стека ниже.

Received memory warning. Level=2
DTMobileIS[2299] : _memoryNotification : {
        OSMemoryNotificationLevel = 2;
        timestamp = "2011-04-11 14:29:09 +0000";
    }
Toplevel exception: System.MissingMethodException: No constructor found for Myapp.UI.BoardController::.ctor(System.IntPtr)
   at System.Activator.CreateInstance (System.Type type, BindingFlags bindingAttr, System.Reflection.Binder binder, System.Object[] args, System.Globalization.CultureInfo culture, System.Object[] activationAttributes) [0x00000] in :0 
   at System.Activator.CreateInstance (System.Type type, System.Object[] args, System.Object[] activationAttributes) [0x00000] in :0 
   at System.Activator.CreateInstance (System.Type type, System.Object[] args) [0x00000] in :0 
   at MonoTouch.ObjCRuntime.Runtime.ConstructNSObject (IntPtr ptr, IntPtr klass) [0x00000] in :0 
   at MonoTouch.ObjCRuntime.Runtime.GetNSObject (IntPtr ptr) [0x00000] in :0 
   at MonoTouch.ObjCRuntime.Runtime.GetNSObjectWrapped (IntPtr ptr) [0x00000] in :0 
   at (wrapper native-to-managed) MonoTouch.ObjCRuntime.Runtime:GetNSObjectWrapped (intptr)
   at MonoTouch.UIKit.UIApplication.Main (System.String[] args, System.String principalClassName, System.String delegateClassName) [0x00000] in :0 
   at Myapp.Free.Application.Main (System.String[] args) [0x00000] in /Users/haakon/Code/Myapp-work/iOS/Myapp.Free/Myapp.Free/Main.cs:12 

Трассировка стека верна в том смысле, что в указанном классе (BoardController, который является подклассом UIViewController) отсутствует конструктор, принимающий параметр IntPtr. Но это сделано намеренно, поскольку я вообще не использую Interface Builder в своем приложении. Так почему же это происходит?

Я нашел аналогичный вопрос, который, казалось, предполагал, что это может произойти, если вы позволите своим представлениям (или, возможно, контроллерам представлений) собирать мусор. Но я не понимаю, как это может здесь случиться. Немного предыстории: делегат моего приложения содержит сильную ссылку на контроллер навигации, который, в свою очередь, содержит сильную ссылку на контроллер корневого представления в стеке навигации. Этот контроллер корневого представления также содержит сильную ссылку на экземпляр BoardController. Поэтому я не понимаю, как это возможно, что BoardController получает сборщик мусора.

Есть идеи?

10
задан Haakon 11 April 2011 в 14:57
поделиться