我想通過for循環遍歷NSArray
。即使int變量i
正確打印(0,1,2 ...),結果也只返回數組中的最後一個值。另外,如果我設置迭代說5
,我會得到數組中的第6個對象,這是正確的。我這樣做是爲了縮小可能原因的範圍。NSArray沒有迭代
任何想法?
int i;
int j;
Buffer *vocalBuffer;
for (i=0; i < numberOfBuffers; i++){ // loop through every vocal buffer
Buffer *mixedBuffer = [[Buffer alloc] init];
int array[sizeLoopBuff];
mixedBuffer.buffer = array;
mixedBuffer.numFrames = sizeLoopBuff;
NSLog(@"Vocal buffer number --> %i", i);
NSInteger iteration = i;
vocalBuffer = [arrayOfVocalBuffers objectAtIndex:iteration]; // grab the vocal buffer
for (j=0; j < sizeLoopBuff; j++){ // run through a beat loop cycle.
mixedBuffer.buffer[j] = loopBuffer.buffer[j]; // add the beats to return buffer.
if (j > insertPoint && j < insertPoint+ vocalBuffer.numFrames){
mixedBuffer.buffer[j] = loopBuffer.buffer[j] + vocalBuffer.buffer[j-insertPoint];
}
}
[mutArray addObject:mixedBuffer];
}
你的問題有點混亂。你說結果返回數組中的最後一個值?如果結果是「'vocalBuffer'」,那麼它當然會檢索最後一個objectAtIndex值。或者是你正在尋找其他東西的結果呢? –
這不好:'int array [sizeLoopBuff]; mixedBuffer.buffer = array;'。您正在for循環的本地數據塊中指定一個動態分配對象的屬性。 –
@MichaelDautermann嗯...也許我犯了一個明顯的錯誤,我看不到。我正在嘗試創建一個'mixedBuffers'數組,每個數組包含'vocalBuffer'和'loopBuffer'。每個'vocalBuffer'都是不同的,但我的輸出是一個'混合緩衝區'的數組,每個緩衝區都包含最後一個'vocalBuffer'。 –