私のゲームiOSプロジェクト用リングバッファが必要です。それは、要素が出て行き入るキューと同様に機能するはずですが、バッファ内の要素の合計量は同じままでなければなりません。iOSプロジェクトでCHCircularBufferを実装する方法は?
私は、Javaを使用して正常にリングバッファを実装しましたが、私は客観的に有名ではありません。私はCHCircularBufferと呼ばれるWeb上のリングバッファの実装を見つけました:https://bitbucket.org/devartum/chdatastructures/src/4d6d7194ee94/source/CHCircularBuffer.mしかし、私はそれを正しく実装できませんでした。
循環バッファは、すべての数学的地形生成を行うTerrainManagerというクラスのプロパティです。リングバッファがTerrainManager
circularTerrainBuffer = [[CHCircularBuffer alloc] initWithCapacity:parts];
の実装で初期化される方法
@interface TerrainManager : NSObject{
int terrainParts;
CHCircularBuffer* circularTerrainBuffer;
}
@property(nonatomic, retain) CHCircularBuffer *circularTerrainBuffer;
@end
これは、このバッファのインスタンスを作成し、部品のサイズプロパティを設定します。今私は、AddObjectメソッドを使用してバッファにオブジェクトを追加します。
[circularTerrainBuffer addObject:[NSNumber numberWithDouble:0.2]];
時には、この行は、エラー「exec_bad_access」を受信します。例えば。私が15の容量のバッファを初期化すると、すべてうまくいく。20でエラーが出る。
これで、描画が行われる地形クラスからバッファにアクセスしようとしました。しかし、私がオブジェクトにアクセスしようとするたびに、私は "bad_access"エラーが発生します。
NSArray *arr = [terrainManager.circularTerrainBuffer allObjects];
など。この行はエラーを作成します。
私のコードには何か問題があります。たぶん私はバッファを理解していないし、オブジェクトを間違って追加します。知りません。任意のアイデアや提案?
FYI、CHDataStructures.frameworkは元々はhttp://cocoaheads.byu.edu/code/CHDataStructures –