2006/03/30(木) 23:59:59 (JST)
NSMutableArrayに色んなものを入れてみる。
NSMutableArrayというと、Objective-Cのオブジェクトを順番に保持しておくクラスですが、実際に保持しているのはポインタなわけです。
ということは、オブジェクトぢゃないポインタも持たせることができるのではないかと思いやってみたわけです。
ということは、オブジェクトぢゃないポインタも持たせることができるのではないかと思いやってみたわけです。
結論から言うと、できました。
NSMutableArrayに登録するとretainメッセージとか送信されたりして変なこと起きるんぢゃないかと思っていたのも杞憂だったようで。
実際に試してみたコードは以下の通り:
なんでもいけるなー、NSMutableArray。
retainメッセージとかどうなってんのかなー。
そこら辺が気になる人は念のために、
NSMutableArrayに登録するとretainメッセージとか送信されたりして変なこと起きるんぢゃないかと思っていたのも杞憂だったようで。
実際に試してみたコードは以下の通り:
test.m
#import <Cocoa/Cocoa.h> int main() { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; NSMutableArray *mutableArray = [NSMutableArray array]; int cArray[5][3] = { { 0, 1, 2}, { 3, 4, 5}, { 6, 7, 8}, { 9, 10, 11}, {12, 13, 14} }; int ii; for (ii = 0;ii < 5;ii++) { [mutableArray addObject:(id)cArray[ii]]; } for (ii = 0;ii < 5;ii++) { int *cArrayInLoop = (int *)[mutableArray objectAtIndex:ii]; printf("%d, %d, %d\n", cArrayInLoop[0], cArrayInLoop[1], cArrayInLoop[2]); } [pool release]; return 0; }コンパイルはターミナルから
gcc test.m -o test -framework Cocoa
でいけます。なんでもいけるなー、NSMutableArray。
retainメッセージとかどうなってんのかなー。
そこら辺が気になる人は念のために、
NSMutableArray *mutableArray = [(NSMutableArray *)CFArrayCreateMutable(kCFAllocatorDefault, 0, NULL) autorelease];としてNSMutableArrayをCoreFoundationからコールバックをNULLにして作成すると完璧かもしれません。
このエントリへのコメント
このエントリにコメントはありません。