2012-02-29 15 views
2

NSArray *tagsArrayおよびNSMutableDictionary *cacheが空でない場合。ローカル変数、最適化、およびARC

この:

for (Tag *tag in tagsArray) { 
    NSString *name = tag.name; 
    [cache setObject:tag forKey:name]; 
} 

はこれより遅くなることはないはずです。

for (Tag *tag in tagsArray) { 
    [cache setObject:tag forKey:tag.name]; 
} 

__strong var 'name'はARCによる暗黙的な保持/解放を使用しませんか?コンパイラは実際に最初から2番目を生成しますか?

+2

リリースビルドに違いがあると私は驚いていますが、デバッグビルドではretain/releaseがおそらくそこにあります。 – dasblinkenlight

+0

はいこれはまったく同じものにコンパイルされます – trapper

+1

*まったく同じものにコンパイルする必要があります。あなたが実際にそれが遅くなっているのを見ているなら、私は奇妙なことが起こっていることを賭けても大丈夫です。 – mattjgalloway

答えて

1

はい、最初の例で "name"変数とやりとりする他のコードがないので、ARCと同じです。

将来的には、パフォーマンスと最適化のためにARCがコードを変更することを理解してください。その逆もありません。知っている必要があります - - ここで

はARCのための全体のドキュメントへのリンクです http://clang.llvm.org/docs/AutomaticReferenceCounting.html

0

ChildClass objecA、objecBが....インスタンス変数を持っている場合、およびParentClassはインスタンス変数があるChildClassのインスタンス変数を(割り当てようとします

ChildClassオブジェクトは、同じオブジェクトのように動作します。それは同じではありませんが。確かに同じではありません。

関連する問題