我創建C數組這樣的:我正確地創建並傳遞這個C數組到Objective-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);
這是理論上的。我爲Objective-C使用ARC。 我是否正確或有更好的方法?
你可能會更好地分配和拷貝構造函數中的陣列。 – Kevin