array.lengthが使えないObjective-Cで、配列のサイズを取得する方法


スポンサーリンク

Javaなどで配列のサイズを取得するには、array.lengthを使えばよかったのですが、
Objective-Cにはlengthに相当する関数がありません。

NSArrayを使えば、countというメソッドがありますが、普通に

int numarr[3];

みたいに、プリミティブ型の配列を宣言した場合、どうやって配列のサイズを取得すればいいでしょうか?

「いや、最初っから「3」ってわかってるやん」というツッコミどころはありそうですが、、

プログラマブルに配列の大きさを取得するには、以下のようにします。

sz = (sizeof foo) / (sizeof foo[0]);

http://stackoverflow.com/questions/1530050/length-of-an-array-in-objective-c

実際見てみましょう。

int numArray[3];
numArray[0] = 100;
numArray[1] = 200;
numArray[2] = 300;

NSLog(@"index指定で取り出す[1]:%d",numArray[1]);

int size = (sizeof numArray) / (sizeof numArray[0]);


for(int i = 0; i < size; i++) {
    NSLog(@"配列をループで回す:%d", numArray[i]);
}

こちらの結果は、

index指定で取り出す[1]:200
配列をループで回す:100
配列をループで回す:200
配列をループで回す:300

となり、配列のsizeを取得して、ループを回すことができました。