0

後で使用するためにローカルオブジェクトを作成する方が良いですか?

NSDictionary *dic = [NSDictionary Dictionary];

また

NSDictionary * dic = nil;

それは好みのものですか、それとも一方が他方よりも優れていますか?

4

2 に答える 2

0

後でそのオブジェクトを使用する場合は、最初のオプションでインスタンス化する必要があります。いくつかのカスタム値を使用してオブジェクトを再初期化するif-elseブロックにオブジェクトを作成する必要がある場合は、2番目のオプションがその方法です。

たとえば、最初のオプション:

NSMutableArray *arr = [NSMutableArray array];

for (int i = 0; i < 5; i++) {
  [arr addObject:@"string"];
}

また

NSDictionary *dictionary = nil;
BOOL flag;

if (flag) {
  dictionary = [NSDictionary dictionaryWithObject:@"string" forKey:@"myKey"];
}
else {
  NSArray *objects;
  NSArray *keys;
  dictionary = [NSDictionary dictionaryWithObjects:objects forKeys:keys];
}
于 2012-10-03T15:02:12.420 に答える
0

「一方が良い」ではなく、「もう一方が悪い」のようです。

後で新しいオブジェクトを割り当てる場合は、nilに初期化します。そうでない場合は、(エラーによって作成された最初のオブジェクトへの参照を失うことでメモリリークが発生します)-編集:いいえ、メモリリークは発生していません(どちらか自動解放または自動参照カウントのためですが、とにかく、それは余分な不要なメソッド呼び出しです。)それは悪いことです。

変更可能なコレクションの場合は、使用する前に作成してください。そうしないと、nilのままになり、送信されたすべてのメッセージが無視されます。これも悪いことです。

結論:それは好みの問題ではありません-論理的に考え、それを使用している特定の目的に適したものを選択する必要があります。

于 2012-10-03T15:09:21.723 に答える