アプリは iOS 4.3 では正常に動作しますが、iOS 5 ではクラッシュします
-
25-10-2019 - |
質問
Xcode 4.2 を使用して iOS 5 にアップグレードすると、アプリがクラッシュし始めます。それ以外の場合は、同じソースが iOS 4.3 で動作することが検証されます。バックトレースではあまり情報が明らかにならなかったので、何が起こったのか全く分かりません。クラッシュの動作について私が言えることは次のとおりです。-
バックトレースにより、EXC_BAD_ACCESS 信号をトリガーする自動プールからメモリ リソースを解放しようとする最後の試みが明らかになりました。
環境を設定すると問題はなくなりました。変数 NSZombieEnabled。これはすべて非常に悲しいことです。私は NSZombieEnabled が割り当て解除されたインスタンスを解放しようとする試みを明らかにできることを期待していました。
ソースを iOS 5 に移行する場合、iOS 5 に合わせて Obj-C ソースを変更する必要があるなど、特別な予防措置を講じる必要がありますか?現時点では、iOS 5 の追加機能を取り入れるためのソースの拡張は行っていません。
ARC について何か読んだのですが、ARC は以前のバージョンの iOS では見られなかった新たなクラッシュを引き起こす可能性があると思いますか?
既存のソースを iOS5 に移行することに関するヒントやアドバイスをいただければ幸いです。
解決
結局のところ、 UITableViewCell*
から返されたもの tableView:cellForRowAtIndexPath
:手動で保持する必要があります (いいえ、ARC をオンにしました)。
私はカスタム nib ファイルを手動でロードしており、Apple のサンプル コードに忠実に従っています。 このリンク
なぜそれを保持する必要があるのかはまだわかりません。私のアプリには、返されたセルを保持しない他のテーブルがいくつかありますが、iOS5では通常どおり機能します。