我创建了一个这样的 C 数组:
unsigned char colorComps[] = {2, 3, 22, 55, 9, 1};
我想将其传递给 Objective-C 对象的初始化程序。
所以我想我必须把数组放在堆上:
size_t arrayByteSize = numColorCompVals * sizeof(unsigned char);
unsigned char *colorCompsHeap = (unsigned char*)malloc(arrayByteSize);
然后我必须将我的第一个“堆栈内存数组”写入 for 循环中的堆数组:
for (int i = 0; i < numColorCompVals; i++) {
colorCompsHeap[i] = colorComps[i];
}
附带问题:是否有更优雅的解决方案来避免 for 循环步骤?
然后我将它传递给方法:
定义为
- (id)initWithColorCompsC:(unsigned char *)colorCompsHeap;
TheObject *obj = [[TheObject alloc] initWithColorCompsC:colorCompsHeap];
TheObject
具有保存 C 数组的属性:
@property (nonatomic, assign) unsigned char *colorComps;
在 -dealloc 我释放它:
free(_colorComps);
这是理论上的。我将 ARC 用于 Objective-C。我这样做是正确的还是有更好的方法?