0

iPad 向けのアプリを開発しています。アプリは特に大きくも複雑でもありません。

アプリを実行するたびに、1 分以内にビルドされます (クリーン後でも)。アプリをプロファイリングしようとすると、Instruments が表示される約 12 分前にビルドされます。ほとんどの場合、Xcode はBuilding 139 of 139 files.

アプリにはいくつかの画像リソースがあり、Core Data を使用し、5 つのサードパーティの「ライブラリ」を使用します (ソース コード ファイルとして含まれています)。

Profile のビルドに時間がかかるのはなぜですか? Xcode のビルドを高速化するにはどうすればよいですか?

編集:

ほとんどの時間は、次のような 2 つの文字列の間に費やされます。

CompileC ***.m normal i386 objective-c com.apple.compilers.llvm.clang.1_0.compiler

ビルドログに灰色で表示されます。

4

1 に答える 1

1

最後に、私は自分の場合の原因を見つけました。

アプリには 3 つのクラスがNSManagedObjectあり、これらのクラスにはそれぞれ約 200 のプロパティがあります。

データは Web サービスから取得されるため、これらのクラスには次のようなコードが含まれます。

- (void) fillFrom:(NSDictionary*)dict
{
    self.id = [dict valueForKey:KEYS[0]];
    self.jobUid = [dict valueForKey:KEYS[1]];
    self.manufacturer = [dict valueForKey:KEYS[2]];
    self.model = [dict valueForKey:KEYS[3]];
    ...
}

明らかに、私はもっとうまくやることができましたが、現時点ではコードは上記のとおりです。プロパティごとに 1 つの割り当て。1つのメソッドで約200の割り当て。

原因:

KEYS定義です。

#define KEYS  @[ @"ID", @"JID", ... ]

基本的に200の課題は課題だけではありません。自動解放された文字列の大きな配列のコピーも、バックグラウンドで作成されます。

定義を次のように変更しました

NSString* KEYS[] = { @"ID", @"JID", ..., nil };

次に、キーと出来上がりを使用する他のコードを適応させます。プロファイルのビルドは、通常のデバッグのビルドとほぼ同じくらい高速です。

残念ながら、ファイルする小さなテスト プロジェクトを準備することはできませんでしたが、私の経験が他の人に役立つことを願ってこれを投稿しました。

于 2013-02-21T09:44:53.117 に答える