【发布时间】:2012-03-03 15:33:58
【问题描述】:
我通常在 Objective-C 中工作,但现在我正在尝试集成一些我也不知道的 C 代码。
让我们从我的 Buffer 对象开始:
@interface Buffer : NSObject {
int* buffer_;
int numFrames_;
int idNumber_;
}
@property (nonatomic) int* buffer;
@property (nonatomic) int numFrames;
@property (nonatomic) int idNumber;
在另一个类中,我正在尝试动态创建 c 数组并将它们粘贴到我的缓冲区对象的缓冲区中。需要注意的是,我事先并不知道需要多少缓冲对象。
for (i=0; i<[arrayOfFlags count]; i++) {
NSNumber *flagObject = (NSNumber*)[arrayOfFlags objectAtIndex:i];
int flagInt = [flagObject integerValue];
Buffer *snippetBuffer = [[Buffer alloc] init];
int returnArray[44000];
snippetBuffer.buffer = returnArray;
snippetBuffer.numFrames = 44000;
snippetBuffer.idNumber = i;
int k;
// NSLog(@"creating snippet buffer at flag %d", flagInt);
for (k = 0; k < 44000; k++) {
snippetBuffer.buffer[k] = // insert some values here.
}
}
当我运行此代码时,所有缓冲区对象都具有与要生成的最后一个相同的数据。我认为正在发生的事情是每次迭代都会覆盖 returnArray。
那么如何确保每次在循环中实例化 c 数组时都分配新内存? (如果这确实是我的问题)。
希望这个问题不要太复杂。请随时提出问题。
【问题讨论】:
标签: objective-c c memory loops initialization