Cocoa结构和NSMutableArray

Cir*_*cle 16 cocoa struct nsmutablearray

我有一个NSMutableArray,我正在尝试存储和访问一些结构.我该怎么做呢?'addObject'给我一个错误,说"addObject的参数1的不兼容类型".这是一个例子('in'是NSFileHandle,'array'是NSMutableArray):

//Write points
for(int i=0; i<5; i++) {
    struct Point p;
    buff = [in readDataOfLength:1];
    [buff getBytes:&(p.x) length:sizeof(p.x)];
    [array addObject:p];
}

//Read points
for(int i=0; i<5; i++) {
    struct Point p = [array objectAtIndex:i];
    NSLog(@"%i", p.x);
}
Run Code Online (Sandbox Code Playgroud)

Geo*_*che 45

如上所述,NSValue可以使用+value:withObjCType:or 包装普通结构 -initWithBytes:objCType::

// add:
[array addObject:[NSValue value:&p withObjCType:@encode(struct Point)]];

// extract:
struct Point p;
[[array objectAtIndex:i] getValue:&p];
Run Code Online (Sandbox Code Playgroud)

有关更多示例,请参阅数字和值指南.