Tengo un problema por el que a veces la aplicación Monotouch se cuelga justo después de recibir una advertencia de memoria. Por favor, vea ese rastro de pila a continuación.No se ha encontrado ningún constructor para ViewController ::. Ctor (System.IntPtr)
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
El seguimiento de pila es correcto en que la clase indicada (BoardController, que es una subclase UIViewController) carece de un constructor que toma un parámetro IntPtr. Pero esto es intencional ya que no uso Interface Builder en absoluto en mi aplicación. Entonces, ¿por qué pasa ésto?
Encontré una pregunta similar que parecía sugerir que esto puede suceder si permite que sus vistas (o posiblemente ver controladores) se conviertan en basura. Pero no veo cómo esto puede suceder aquí. Algunos antecedentes: el delegado de mi aplicación contiene una fuerte referencia a un controlador de navegación, que a su vez contiene una fuerte referencia al controlador de vista raíz en la pila de navegación. Este controlador de vista raíz también contiene una fuerte referencia a la instancia BoardController. Entonces no entiendo cómo es posible que BoardController obtenga basura recolectada.
¿Alguna idea?
GRACIAS. TÚ. MIGUEL !!!! Había estado luchando con esto por años. Obtuve un controlador de navegación funky nav/tab/single/dialog root que cambia la lógica + los controladores modales, y acabo de pasar demasiado tiempo jugando con esas cosas pensando que esa fue la causa. No sé qué me llevó tanto googlear el mensaje de excepción ... ¡pero ahora todo tiene sentido! – Tyson