2011-01-19 7 views
0

これは私が初心者の質問メモリとコードの最適化

domaine *detailsDomaine = [search_result objectAtIndex:indexPath.row]; 
cell.textLabel.text = [NSString stringWithFormat:@"%@",[detailsDomaine valueForKey:@"nom"]]; 

書いたものですが、同じ結果に到達するために、変数(detailsDomaine)を割り当てないですることが可能ですか? その後、ドミナの変数の詳細をリリースする必要がありますか?私は、コードの残りの部分のどこにもそれを使用していないよ

...

+0

これは実際には、ラベル割り当て行で "[search_result objectAtIndex:indexPath.row]"を詰め込むよりも優れていると思います。それははるかに読みやすく、維持しやすいです。 – Gianz

答えて

0

このために別の変数を作成しないようにすることができます。

cell.textLabel.text = [NSString stringWithFormat:@"%@",[[search_result objectAtIndex:indexPath.row] valueForKey:@"nom"]]; 

をそして、あなたはそれではないretainなかったのでいいえ、あなたはその後detailsDomaineオブジェクトを解放する必要はありません。最初の行の割り当ての右手と2行目のdetailsDomaineを交換してください。

+0

@krifurもしそれがプロパティでreatainedされていれば、それはリリースではなくnilでなければならず、もしあなたがそれを割り当てていればそれをリリースすることができます。 – Sabby

2

いいえ、ドメインを保存するためにメモリを割り当てなかったため、ドメインを詳細に公開する必要はありません。あなたは次のようなことをすることができます:

cell.textLabel.text = [NSString stringWithFormat:@"%@", [[search_result objectAtIndex:indexPath.row] valueForKey:@"nom"]]; 

しかし、それはかなり醜いです。

+0

もう一度もう一度! – krifur

+0

右のブロ...... – Sabby

0

あなたはそれを解放する必要はありませんすべての最初の...

あなたは

cell.textLabel.text = [NSString stringWithFormat:@"%@",[[search_result objectAtIndex:indexPath.row] valueForKey:@"nom"]]; 
0

のような単一のステートメントでも、他の回答を書き込むことができますが正しい、私はちょうどこれを追加してみましょう:ジョニーグラスが言ったことは真実です。それは醜い、すなわち読みにくい。それはあなたに何も得られません。コンパイラは余分な割り当てを書き留め、最適化します。たとえそれがあっても、1秒で10,000回呼び出されない限り、最適化する価値はありません。

+0

thx、あなたはちょうど私が尋ねようとしていたものを期待する! – krifur