私たちはiPhone 4g/4gsでは問題なく動作するアプリをappstoreに持っていますが、 iPod上ではいつも「ランダム」な場所でクラッシュするので驚きました。裾の痕跡を見ると、私のビューコントローラはGCされているようです。GCが実行された管理対象オブジェクトでobjective-cから呼び出されたセレクタ、viewcontrollersがGC'dされないようにする方法
public void PushShowTeamController (Object a)
{
var teamController = new TeamController (a);
NavigationController.PushViewController (teamController, true);
}
iPodはsuddentlyこのようなエラーがスローされますので:私の経験から
Jan 6 18:52:09 unknown MyApp[5197] <Warning>: Received memory warning.
Jan 6 18:52:10 unknown UIKitApplication:mypackage.app[0x9db2][5197] <Notice>: Unhandled Exception: System.Exception: Selector invoked from objective-c on a managed object that has been GC'ed ---> System.MissingMethodException: No constructor found for MyApp.TeamController::.ctor(System.IntPtr)
Jan 6 18:52:10 unknown UIKitApplication:mypackage.app[0x9db2][5197] <Notice>: 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 <filename unknown>:0
Jan 6 18:52:10 unknown UIKitApplication:mypackage.app[0x9db2][5197] <Notice>: at System.Activator.CreateInstance (System.Type type, System.Object[] args, System.Object[] activationAttributes) [0x00000] in <filename unknown>:0
Jan 6 18:52:10 unknown UIKitApplication:mypackage.app[0x9db2][5197] <Notice>: at System.Activator.CreateInstance (System.Type type, System.Object[] args) [0x00000] in <filename unknown>:0
Jan 6 18:52:10 unknown UIKitApplication:mypackage.app[0x9db2][5197] <Notice>: at MonoTouch.ObjCRuntime.Runtime.ConstructNSObject (IntPtr ptr, IntPtr klass) [0x00000] in <filename unknown>:0
Jan 6 18:52:10 unknown UIKitApplication:mypackage.app[0x9db2][5197] <Notice>: --- End of inner exception stack trace ---
これらをローカルで追跡するためにGCにメモリを強制的に強制する方法はありますか?私の4gsデバイスはあまりにも多くのメモリを持っています:-)それとも、それらを追跡するためにたくさんのメモリを割り当てるダミーコードを書く必要がありますか? –
iOSシミュレータでデバッグする際、MonoTouchは 'GC.Collect'を非常に頻繁に呼び出すスレッドを起動し、** help **(保証しない)にそのような問題を発見します。これは、MonoTouch 4以来** GCがより積極的になっていることで知られています。 – poupou
自分では見たことがありませんが、ユーザーからのクラッシュログ(1日に1000 DLを1日に3〜4日)ほとんどの場合、メモリの少ない3GSなどの「古い」デバイスからのものです。さて、私は深く掘り下げようとします。再度、感謝します。 –