配列に関して
Objective-Cの配列に関してですが、なんか使いづらい...。
恐らく、int array[ ]みたいなものは、あんまり使わないのかもしれない。
簡単な感じで書くと下の様な感じになるけど...事前にサイズが分かってないといけない。
int array[] = {10, 20, 30}; for (int i = 0; i < 3; i++) { NSLog(@"%d", array[i]); }
それで、調べたが...サイズを取得できないぽい。
じゃあ無理かと言うとそうでもないけど...かなり頑張らないといけない。
NSMutableArrayにNSNumberを入れるとできるが...取り出すときにintに変換しないといけない。
めちゃめちゃ大変?だけど、下の様な感じです。
NSMutableArray *array = [[NSMutableArray alloc] init]; [array addObject:[NSNumber numberWithInt:10]]; [array addObject:[NSNumber numberWithInt:20]]; [array addObject:[NSNumber numberWithInt:30]]; for (int i = 0; i < (int)[array count]; i++) { NSLog(@"%d", [[array objectAtIndex:i] intValue]); }
ちなみに、NSArrayでもできるが@autoreleasepoolが必要ぽい。
@autoreleasepoolなしでやろうとすると、下の警告がでる。
class __NSArrayI autoreleased with no pool in place - just leaking - break
@autoreleasepool書かないで、うまくいく方法がわからない...もう少し調べてみるかぁ。
とりあえず@autoreleasepool使って書いた感じは、下の様な感じです。
@autoreleasepool { NSArray *array = [NSArray arrayWithObjects: [NSNumber numberWithInt:10], [NSNumber numberWithInt:20], [NSNumber numberWithInt:30], nil]; for (int i = 0; i < (int)[array count]; i++) { NSLog(@"%d", [[array objectAtIndex:i] intValue]); } }
やっぱりObjective-Cの配列めんどくさい気がする。
もう少し簡単にできないものか?
どうみても使いづらいでしょ...実は、もっと簡単な方法があるのかもしれい。