如何在 NSMutableArray 中使用 struct?
问问题
2349 次
1 回答
2
你不能。Foundation 中的所有集合都只能存储 Objective-C 对象。由于 astruct
不是 Objective-C 对象,因此不能将其存储在其中。
但是您可以将您的子类包装struct
成一个简单的NSObject
子类并将其存储在数组中。
或与NSValue
:
#import <Foundation/Foundation.h>
struct TestStruct {
int a;
float b;
};
...
NSMutableArray *theArray = [NSMutableArray new];
...
struct TestStruct *testStructIn = malloc(sizeof(struct TestStruct));
testStructIn->a = 10;
testStructIn->b = 3.14159;
NSValue *value = [NSValue valueWithBytes:testStructIn objCType:@encode(struct TestStruct)];
[theArray addObject:value];
free(testStructIn);
...
struct TestStruct testStructOut;
NSValue *value = [theArray objectAtIndex:0];
[value getValue:&testStructOut];
NSLog(@"a = %i, b = %.5f", testStructOut.a, testStructOut.b);
顺便说一句,没有真正的理由为什么要分配一个结构并分配一个堆栈。只是想我会这样做以表明它有效。
于 2013-01-28T18:57:48.840 回答