0

NSArrayforループで反復しようとしています。int変数iが正しく出力されていても、結果は配列の最後の値のみを返します(0,1,2 ...)。

また、反復を言うように設定すると5、配列内の6番目のオブジェクトが取得されます。これは正しいことです。考えられる原因の範囲を絞り込むためにこれを行いました。

何か案は?

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];
}
4

1 に答える 1

2

コメントで理解されているように、スタックストレージへのポインタの使用にはいくつかの問題があります。1つは、スコープ内にある間、そのコンテンツはループ内で使用するたびに上書きされることです。それへのポインタを持つ個々のオブジェクトには、一意のコピーがありません。

もう1つの問題は、メソッドが返され、そのスタックスペースが不要になると(ランタイムに関する限り)、そのスペースで何が行われるかを予測できないことです。

オブジェクトごとに一意のバッファを持つという必要な動作は、オブジェクトが作成時に独自のバッファを動的に割り当てる必要があることを示しています。

于 2012-06-23T16:00:54.263 に答える