मुझे खेद है कि यह सी-नोब प्रश्न का थोड़ा सा है: मुझे पता है कि मुझे अपने पॉइंटर्स पर स्विट करने की आवश्यकता है। दुर्भाग्य से मैं एक समयसीमा पर हूं इसलिए पूरे पुस्तक अध्याय के माध्यम से काम करने का समय नहीं है, इसलिए मैं थोड़ा अधिक लक्षित सलाह की उम्मीद कर रहा हूं।उद्देश्य-सी एआरसी और वस्तुओं के सी सरणी
मैं कुछ उद्देश्य-सी ऑब्जेक्ट्स को सी सरणी में स्टोर करना चाहता हूं। मैं एआरसी का उपयोग कर रहा हूँ। अगर मैं मैक पर था तो मैं इसके बजाय NSPointerArray का उपयोग करने में सक्षम हूं, लेकिन मैं आईओएस पर हूं और यह उपलब्ध नहीं है।
मैं एक त्रि-आयामी सी सरणी संग्रहित करूँगा: अवधारणात्मक रूप से मेरे आयाम दिन, ऊंचाई और कैश नम्बर हैं। प्रत्येक तत्व या तो एक उद्देश्य-सी ऑब्जेक्ट, या नल के लिए एक सूचक होगा।
कैश की संख्या (यानी कैश नम्बर आयाम का आकार) संकलन समय पर जाना जाता है, लेकिन अन्य दो ज्ञात नहीं हैं। इसके अलावा, सरणी बहुत बड़ी हो सकती है, इसलिए मुझे गतिशील रूप से इसके लिए स्मृति आवंटित करने की आवश्यकता है।
स्वामित्व अर्थशास्त्र के संबंध में, मुझे वस्तुओं के मजबूत संदर्भ की आवश्यकता है।
मैं पूरे त्रि-आयामी सरणी को एक उद्देश्य-वस्तु पर एक आवृत्ति चर होना चाहता हूं।
मैं एक विधि है कि है - tableForCacheNumber:(int)num days:(int*)days height:(int*)height
के लिए योजना है। उस विधि को एक द्वि-आयामी सरणी वापस करनी चाहिए, जो एक विशिष्ट कैश संख्या है। (यह भी वापस संदर्भ द्वारा सरणी यह लौटने के आकार से गुजरता है।)
मेरे सवालों का:
क्या आदेश मैं अपने आयाम रखना चाहिए ताकि मैं आसानी के लिए subarray के लिए सूचक लौट सकते हैं एक विशिष्ट कैश संख्या? (मुझे लगता है कि यह पहले होना चाहिए, लेकिन मैं 100% नहीं हूं।)
मेरी विधि का रिटर्न प्रकार क्या होना चाहिए, ताकि एआरसी शिकायत न करे? मुझे कोई फर्क नहीं पड़ता कि लौटे सरणी में संदर्भ संख्या बढ़ी है या नहीं, जब तक मुझे पता है कि यह कौन सा कर रहा है।
मेरे आवृत्ति चर को किस प्रकार का होना चाहिए जिसमें त्रि-आयामी सरणी होनी चाहिए? मुझे लगता है कि यह सिर्फ एक सूचक होना चाहिए, क्योंकि वह ivar सिर्फ मेरी पहली सरणी में पॉइंटर का प्रतिनिधित्व करता है जो मेरी सरणी में है। सही बात? यदि हां, तो मैं इसे कैसे निर्दिष्ट करूं?
जब मैं त्रि-आयामी सरणी (मेरे इवर के लिए) बनाता हूं, तो मुझे लगता है कि मैं
calloc(X * Y * Z, sizeof(id))
की तरह कुछ करता हूं, और परिणाम को अपने ivar के प्रकार के रूप में डालता हूं?आईवर में त्रि-आयामी सरणी से वस्तुओं तक पहुंचने पर, मेरा मानना है कि मुझे प्रत्येक बार पॉइंटर को
(*myArray)[4][7][2]
जैसे कुछ करना होगा। सही बात?दो आयामी सरणी मैं विधि से लौटने इसी तरह पहुँचा जा सकता है?
क्या मुझे
objc_returns_inner_pointer
के साथ लौटा हुआ दो-आयामी सरणी टैग करने की आवश्यकता है?
मैं एक बार फिर है कि यह एक बुरा स्टैक ओवरफ़्लो सवाल का एक सा है माफी चाहता हूँ (यह बहुत लंबा और भी कई भागों के साथ है)। मुझे आशा है कि एसओ नागरिक मुझे माफ कर देंगे। मेरे इंटरवेब कर्म को बेहतर बनाने के लिए, जब मैं इस परियोजना को भेजता हूं तो शायद मैं इसे ब्लॉग पोस्ट के रूप में लिखूंगा।
[इस पृष्ठ] पर एक उदाहरण मिला (http://developer.apple.com/library/ios/#releasenotes/ObjectiveC/RN-transitioningToARC/Introduction/Introduction.html) ("क्या मैं एक सी सरणी बना सकता हूं एआरसी के तहत बनाए गए पॉइंटर्स? ", नीचे के पास), जिसे मैं निकालने का प्रयास कर रहा हूं। अगर कोई उत्तर पोस्ट करना चाहता है तो भी मैं वास्तव में स्पष्टीकरण की सराहना करता हूं :) –