アプリにシングルトンを実装していますが、View Controller を切り替えるときに問題が発生しました。
私のアプリは、1 つのビュー コントローラー MainMenu で開始し、メニュー選択が行われると Game ビュー コントローラーに切り替わります。ゲームのオブジェクト マネージャー (World と呼ばれる) である Game VC にシングルトン クラスがあります。MainMenu でのメニュー選択に基づいてコンテンツをロードします。MainMenu VC に問題なくロードして終了できます。シングルトンは正常に動作します。MainMenu から再度選択すると (MainMenu VC から Game VC に移動)、NSAssert の原因でアプリがクラッシュし、シングルトン World が 2 回目の割り当てを行わないようにします。これは意図的なものです。
シングルトンを再初期化しようとせずにゲーム VC に戻すにはどうすればよいですか?
[[world alloc] init]
基本的に、ゲーム VC の init メソッドの行をスキップしたいと考えています。これを適切に行う方法がわかりません...初めて(Worldが存在しない場合)またはその後(Worldがすでにシングルトンとして存在する場合)に処理できる必要があります。私は試しましたが、うまくいきif (!world)
ません。
これも疑問です...シングルトンを適切な場所に実装しましたか? 代わりに MainMenu に入れる必要がありますか? 2 つの VC を切り替えるときに、シングルトンを再初期化/再割り当てしようとするのを避けたいだけです。
[self.view removeFromSuperview];
これで問題が解決する場合は、 Should I do it a different way?を使用してゲーム VC を終了します。