मुझे एक रिंग बफर चाहिए। यह एक कतार के समान काम करना चाहिए जहां तत्व बाहर जाते हैं और अंदर जाते हैं लेकिन बफर में तत्वों की कुल मात्रा वही रहनी चाहिए।आईओएस प्रोजेक्ट में CHCircularBuffer को कैसे कार्यान्वित करें? मेरे गेम आईओएस प्रोजेक्ट के लिए
मैंने जावा का उपयोग करके सफलतापूर्वक रिंग बफर लागू किया लेकिन मैं उद्देश्य-सी के साथ इतना familar नहीं हूँ। मुझे CHCircularBuffer नामक वेब पर एक रिंग बफर कार्यान्वयन मिला: https://bitbucket.org/devartum/chdatastructures/src/4d6d7194ee94/source/CHCircularBuffer.m हालांकि मैं इसे सही ढंग से कार्यान्वित करने में विफल रहा।
सर्कुलर बफर TerrainManager नामक कक्षा की एक संपत्ति है जो सभी गणितीय इलाके की पीढ़ी करता है।
@interface TerrainManager : NSObject{
int terrainParts;
CHCircularBuffer* circularTerrainBuffer;
}
@property(nonatomic, retain) CHCircularBuffer *circularTerrainBuffer;
@end
यह कैसे अंगूठी बफर TerrainManager
circularTerrainBuffer = [[CHCircularBuffer alloc] initWithCapacity:parts];
के कार्यान्वयन में आरंभ नहीं हो जाता यह बफर का एक उदाहरण बनाता है और भागों में आकार संपत्ति सेट। अब मैं बफर addObject विधि का उपयोग करने के लिए वस्तुओं जोड़ें:
[circularTerrainBuffer addObject:[NSNumber numberWithDouble:0.2]];
कभी कभी यह लाइन एक त्रुटि "exec_bad_access" प्राप्त करता है। जैसे जब मैं 15 की क्षमता वाले बफर को सबकुछ ठीक करता हूं, 20 के साथ मुझे त्रुटि मिलती है।
अब मैं इलाके के वर्ग से बफर तक पहुंचने का प्रयास करता हूं जहां ड्राइंग होता है। लेकिन जब भी मैं वस्तुओं तक पहुंचने का प्रयास करता हूं तो मुझे "bad_access" त्रुटि मिलती है।
NSArray *arr = [terrainManager.circularTerrainBuffer allObjects];
उदा। यह लाइन त्रुटि पैदा करेगी।
तो मेरे कोड में कुछ गड़बड़ है। शायद मैं बफर को समझ नहीं पा रहा हूं और वस्तुओं को गलत तरीके से जोड़ता हूं। मुझे नहीं पता। कोई विचार या सुझाव?
एफवाईआई, सीएचडीटास्ट्रक्चर.फ्रेमवर्क मूल रूप से: http://cocoaheads.byu.edu/code/CHDataStructures –