0

これは単純なものです。現在NSError、でフェッチを実行するたびに新しいオブジェクトを作成していNSFetchedResultsControllerます。これは多くのメソッドで発生するため、現在、メインのViewControllerには9つのメソッドがあります。プロパティとして作成NSErrorして使用する必要がありますか、それとも、使用するたびに新しいプロパティを作成する方が一般的に受け入れられていますか?

複数を作成することの利点は、複数のエラーが発生した場合に両方を個別に取得できることだと思いますが、これが発生する可能性が低い場合は、すべてのperformFetch呼び出しに共有エラーを使用できますか?NSError私は多くのプログラミング規約とテクニックを学んでいるので、これが問題ではない場合はお詫びします。さまざまな場所でオブジェクトを使用するためのより一般的なアプローチについてフィードバックをもらいたいと思います。

4

2 に答える 2

1

スタック上で1つを宣言し、そのアドレスを渡すだけで、実質的に無料です。だからあなたはすることができます:

NSError *errorA;

// do something, passing &errorA
if (!errorA) {
    // do something passing &errorA again
}

または、追加コストはほとんどありません(スタック上の別のポインターのみ)

NSError *errorA, *errorB;

// do something, passing &errorA
// do something, passing &errorB, that doesn't care whether the last thing succeeded

if (!errorA && !errorB) {
    // do something else
}

ここでNSErrorの割り当てについて心配する必要はありません。それは、最初のアクションの成功と2番目のアクションの実行の間の依存関係のロジックに関するものでなければなりません。

于 2013-03-26T18:23:16.873 に答える
1

あなたは実際にはNSErrorオブジェクトを作成していません。オブジェクトへの参照を宣言してから、作成NSErrorするオブジェクトに参照を向けることができるメソッドに参照を渡しNSErrorます。

NSError *err; // just a reference, no object created
// this creates an object, but you don't do this
err = [NSError errorWithDomain:@"foo" code:0 userInfo:nil];

// You do this.... 
BOOL success = [fetchedResultsController performFetch:&err];

違いは、オーバーヘッドを必要とするオブジェクトの束を実際に作成しているわけではないということです。したがって、それらすべてに同じ変数を再利用する場合、またはそれぞれに新しい変数を作成する場合、パフォーマンスに影響を与えることはありません。

したがって、質問に答えるには、1つの変数を使用するか、適切と思われる数の変数を使用します。一部のコードはエラーで失敗し、続行を拒否する可能性があるため、1つのエラーで問題ありません。他のコードは、すべてのエラーを保持し、最後にそれらを吐き出すように、試行を続けたい場合があります。それはあなたがその時に取り組んでいる特定のコーディングに何が最もよく合うかという問題です。

于 2013-03-26T18:29:16.953 に答える