1

クラッシュの問題を回避するために、次のコードのようにすべてのインデックスにアクセスする前に配列数を確認すると、パフォーマンスの問題はありますか? それは大きなアプリにとって良い習慣ですか、それとも悪い習慣ですか?

私のコードは次のとおりです。

-(BOOL)checkIndexAvailability:(NSArray *)array_ withIndex:(int)index_
{
    if ((array_.count-1)>=index_) {
        return TRUE;
    }
    return FALSE;
}

配列にアクセスするときは、次のように呼び出します。

if ([self checkIndexAvailability:regDataArray withIndex:2]) {
    lastName = [regDataArray objectAtIndex:2];
}
4

5 に答える 5

1

Alladanian、brainLikeApple、Kris Gellic の回答の助けを借りて、Array Index の範囲外のクラッシュの問題を防ぐには、次の方法に従うことで解決できることを理解しています。

int arrayCount = [regDataArray count];

NSString *lastName = ( 2 <arrayCount) ? [regDataArray objectAtIndex:2] : @"Last Name Not Found";
NSString *address = ( 4< arrayCount) ? [regDataArray objectAtIndex:4] : @"No Address Found";

毎回別のメソッドを作成したり、配列 count メソッドにアクセスしたりする必要はありません。

于 2013-04-10T13:37:48.817 に答える
0

カテゴリにまとめられると思います。または、ランタイム ライブラリを使用して標準の実装を変更することもできます。また、デバッグ モードでアサーションのようなものを追加すると、間違ったインデックスを送信する実装の問題が隠されなくなります。PSパフォーマンスに劇的な影響を与えるとは思いません。

于 2013-04-10T13:17:27.030 に答える
0

そのようにすることで、アプリがそれほど遅くなることはないと思います。

しかし、プログラミングをしているときに、物事が正しい方法で行われている場合、プログラムは存在しない配列位置の何かを決して取得しようとしないことを考慮してください。

より多くの情報を見つけることができます境界チェック

于 2013-04-10T13:05:47.940 に答える