2011-12-13 8 views
0

私は今日TestFlightAppで私のiPhoneアプリの最初のベータ版をリリースしました。私がアプリケーションの応答性が非常に難しいことに気付くまで、すべてがうまくいっています。確かに、私が行っている "素敵な"ネイティブな感触はありません。iPhoneでのパフォーマンスの最適化

私は自分のメモリ割り当て/割り当て解除に関して特に慎重だったので、これは問題ではないと思います。基本的には、私のアプリのパフォーマンスを向上させるためにどこに向かうべきか分かりません。ほとんどの(すべてではない)UI要素の外観をカスタマイズするUIAppearanceを使用し

  1. :私は私の景気減速のいくつかがに帰することができると思うのはここ

    です。素敵な影を描くために、CALayerに新しいフォント、たくさんのCAGradientLayers、たくさんの編集を使用します。

  2. グループ化されたUITableViewCellsは、マップと項目リストの画像を表示します。

  3. layoutSubviewsを呼び出すたびにレイアウトが更新されるUITableViewCells。

  4. カスタマイズされた高さのUITableViewCells。 heightForRowAtIndexPathを呼び出すたびに、ビューを再構築してレイアウトを変更し、毎回正確な高さを返す必要があります。

  5. プログラムでビューを作成したため、より長いviewDidLoad呼び出しを持つコントローラは読み込みが遅くなる傾向があります。 initコールでどのようなコードをオフセットできますか?

これらの問題に対処するヒントやヒントはありますか?あるいは、最初のアプリをリリースしたときのパフォーマンスがどのように低下​​したかについての話がありますか?あなたがShadow Pathsを使用していることを確認)

1:

+1

UITableViewCellで写真を非同期で読み込みますか? –

+0

はい、あります。私のサーバーへの非同期呼び出しです。 –

+0

バックグラウンド処理は何ですか? – Magnus

答えて

3

私の答えはあなたのポイントのすべてを取り上げますが、ここではカップルではないでしょう。パスははるかにパフォーマンスが良いです。

2)透明またはコーナーの丸めを使用していますか?その場合は、できるだけ透明度を下げてください。CALayer cornerRadiusを使用して角を丸めないでください。代わりに、丸めが必要なビューのdrawRectにクリッピングマスクを使用します。

4)おそらく、配列内の高さをキャッシュすることができ、毎回計算を繰り返す必要はありません。これは潜在的なアイテム数に応じてスケールされてもよいし、スケールされなくてもよいが、ユースケースに応じて受け入れられるかもしれない。

5)再利用できるビューはありますか?たとえば、私がUITableViewCellのカスタム選択ビューを持っている場合、コントローラが保持する単一のインスタンスを作成し、それをすべてのセルで参照します。

+0

プリロードせずにカスタムフォントを使用すると高価になることもあります。たとえば、「Chalkduster」のすべてのアスキーシンボルをプリロードすると、iPodには約10秒かかります。 – debleek63

+0

@Wayne:アドバイスをいただきありがとうございます。私はそこから始めようとします。高さキャッシングについての良いアイデアも。それは多くの意味があります。 –

+0

@debleek:どのようにフォントをキャッシュするのですか? –

0

Instruments(または他のプロファイリング方法論)を実行して、アプリが時間のほとんどを費やしている場所を特定しましたか?間違ったことを最適化する前にこれを行うことをお勧めします。

+0

正直言って、私はインストゥルメンタルを走らせてみましたが、それをもっとうまく使いこなすことはできませんでした。私はもう一度それをチェックアウトします。 –

関連する問題