は私が配列構築し、返すメソッドがあります。のObjective-C:@ []との違いは何[[NSArrayのアロケーション] initWithCapacity:0]
- (NSArray *)foo
{
NSUInteger capacity = [self getArrayCapacity];
if (capacity == 0) {
return @[];
} else {
NSMutableArray *array = [[NSMutableArray alloc] initWithCapacity:capacity];
// add elements to the array, as many as capacity
...
return array;
}
}
を使用しているメモリに差がありますかパフォーマンス次のように私は、コードを簡略化する場合:
ときcapacity == 0
代わり@[]
を返すので、それは[[NSMutableArray alloc] initWithCapacity:0]
は番目です戻ってきますパフォーマンスやメモリのペナルティ/違い?
をテストすることができませんか?あなたは100万回のループでそれを呼び出すことができ、スピードが2で異なるかどうかを見ることができます。インストゥルメントを使用してメモリサイズに違いがあるかどうかを調べることができます。また、即時構文は可変または不変のインスタンスを作成しますか?ドキュメントの私の読書は、不変の創作のみを示しています。 – user1118321
getterの前に 'get'を付けないでください(objcは一般的に' get'接頭辞を使いません)。 – bbum