dla mojej gry projekt iOS Potrzebuję bufora pierścienia. Powinien działać podobnie do kolejki, w której elementy wychodzą i wchodzą, ale całkowita ilość elementów w buforze powinna pozostać taka sama.Jak zaimplementować program CHCircularBuffer w projekcie iOS?
Zaimplementowałem bufor pierścieniowy z powodzeniem za pomocą java, ale nie jestem tak dobrze faworytem z celem-c. Znalazłem implementację bufora pierścieniowego w sieci o nazwie CHCircularBuffer: https://bitbucket.org/devartum/chdatastructures/src/4d6d7194ee94/source/CHCircularBuffer.m Jednak nie udało się go poprawnie wdrożyć.
Okrągły bufor jest własnością klasy o nazwie TerrainManager, która wykonuje wszystkie matematyczne generowanie terenu.
@interface TerrainManager : NSObject{
int terrainParts;
CHCircularBuffer* circularTerrainBuffer;
}
@property(nonatomic, retain) CHCircularBuffer *circularTerrainBuffer;
@end
to jak bufor pierścieniowy jest inicjowany w realizacji TerrainManager
circularTerrainBuffer = [[CHCircularBuffer alloc] initWithCapacity:parts];
Powoduje to wystąpienie buforze i ustawia właściwość rozmiarze do elementów. Teraz dodam obiekty do bufora za pomocą metody addObject:
[circularTerrainBuffer addObject:[NSNumber numberWithDouble:0.2]];
Czasami ten wiersz otrzymuje błąd "exec_bad_access". Na przykład. kiedy uruchamiam bufor o pojemności 15, wszystko jest w porządku, a 20 otrzymuję błąd.
Próbuję teraz uzyskać dostęp do bufora z klasy terenu, w którym odbywa się losowanie. Ale za każdym razem, gdy próbuję uzyskać dostęp do obiektów, pojawia się błąd "bad_access".
NSArray *arr = [terrainManager.circularTerrainBuffer allObjects];
Np. ta linia spowodowałaby błąd.
Coś jest nie tak z moim kodem. Być może nie rozumiem bufora i dodawania obiektów w niewłaściwy sposób. Nie wiem. Wszelkie pomysły i sugestie?
FYI, CHDataStructures.framework jest oryginalnie z: http://cocoaheads.byu.edu/code/CHDataStructures –