要約:iOS 5に移行する際の注意事項を追加できますか? StackOverflowは、iOS 5へのアップグレードに携わったので、非常に貴重です。Xcode 4.2より前に欠けていたかなり基本的なものを発見しました。他の "落書き"が潜んでいるかもしれないと思います。iOS 5に移行する際の注意点
詳細:今週の出荷はiOS 5で、いくつかのアプリにいくつかの変更を加えなければなりませんでした。新しいARC機能のため、Xcode 4.2ではメモリ管理コードの分析がはるかに優れています。 iOS 5アップデートは、すべてのメモリ管理コードを確認するのに最適なポイントです。新しいコンパイラには、以前のコンパイラが見逃していた他の多くの問題もあります。アップルのコンパイラエンジニアに賞賛します。ここでは、助けてくれた主なものがあります(その多くは、以前のバージョンのiOSにも当てはまります)。
- 先頭にではなく、call [super dealloc] at the END of your dealloc methodsにしてください。
- viewDidUnloadでは、あなたのviewDidUnloadの先頭ではなく、some people have reported bugs that require [super viewDidUnload] to be called at the endです。
- 保持カウント、合成されたセッター、解放または自動解放を呼び出すタイミングについて理解しています。新しいコンパイラは、古いコンパイラよりも多くの問題を指摘します。 (私は気をつけていたと思ったが、明らかに十分な注意を払っていなかった。)Appleのmemory management guideは読んでおく必要があり、ショートカットは必要ない。
- turn on zombies when debugging(Xcodeでは、Product | Edit Scheme ...を選択してデバッグ方式を選択し、[Diagnostics]タブで[Enable Zombie Objects]をオンにします)。これはゾンビの使用を試みるのに役立ちます(あなたはもはや使用してはいけないオブジェクト)。
- リークスツールも役立ちます。プロファイルモードでアプリを実行し、リークテンプレートを選択します。インストゥルメントウィンドウでリーク音源を選択し、 "リークしたメモリ内容を収集する"ボックスをチェックすると、リークしたメモリがコード内でどこから発生しているかを確認するのに役立ちます。
があり、いくつかのオッズであり、私が遭遇した終了:
- (oneway void) release { }
- あなたは可能性があります
- Appleのsingleton patternニーズを "一方向" 戻り型の宣言に追加ビルド設定でmanually add "armv6" as an architecture typeにする必要があります(ビルドアクティブアーキテクチャのみがNOに設定されていることを確認してください)。
私が探すべき潜在的な落とし穴の他の提案はありますか?私のアプリは今より安定していると感じていますが、以前はかなり気分が良くなっていました。
メモリ管理ではありませんが、とにかく重要です。データをダウンロードしてデバイスに保存する場合は、ドキュメントフォルダに保存しないように注意してください。そのためにライブラリ/キャッシュまたはtmpを使用してください。バンドルIDで追加されたNSApplicationSupportDirectoryにアプリケーションデータを格納します。詳細はhttp://developer.apple.com/library/mac/#documentation/FileManagement/Conceptual/FileSystemProgrammingGUide/FileSystemOverview/FileSystemOverview.html#//apple_ref/doc/uid/TP40010672-CH2-SW1を参照してください。 –
メモリ管理もしません。しかし、あなたがセキュリティ/証明書関連のものをやっている場合。 MD5ハッシュされた証明書がSecTrustEvaluateのkSecTrustResultRecoverableTrustFailureを返すことを覚えておいてください。 ios5はMD5ハッシュが安全でないとみなすからです。 – n3utrino
IOS5に移行するためのもう1つの点は廃止予定のUDIDです。 http://stackoverflow.com/questions/6993325/uidevice-uniqueidentifier-deprecated-what-to-do-now –