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を取得して、ループを回すことができました。