2010-11-21 22 views
6

मुझे एनएसएमयूटेबलएरे में CGGradientRef को संग्रहीत करने के कार्य में समस्या हो रही है। इसे सरणी में स्टोर करने के लिए इसे लपेटने के लिए क्या करना है और इसे खोलना क्या है।एनएसएमयूटेबलएरे में CGGradientRef को स्टोर करने के लिए कैसे करें

धन्यवाद।

उत्तर

12

आपको इसे किसी भी चीज़ में लपेटना नहीं है। बस इसे id पर डालें और इसे सरणी में जोड़ें। आप इसे CFType से व्युत्पन्न किसी भी कोरफाउंडेशन प्रकार के लिए कर सकते हैं ("रेफरी" में समाप्त होने वाली कुछ भी कम हो सकती है)।

वैकल्पिक रूप से, आप एनएसएमयूटेबलएरे * को एक CFMutableArrayRef में डाल सकते हैं और CFArrayAppendValue() को कॉल कर सकते हैं। यह कोई और प्रकार नहीं है; यह सरणी बनने पर निर्दिष्ट बनाए रखने/रिलीज कॉलबैक को कॉल करता है। (एक उल्लेखनीय अपवाद अपवाद है - [NSDictionary setValue: forKey:] जो कुंजी की प्रतिलिपि बनाता है, जबकि संबंधित CFDictionary फ़ंक्शन नहीं होता है। कभी-कभी "mutable" ऑब्जेक्ट (उदाहरण के लिए एक NSURLConnection) के साथ एक कुंजीपटल कुंजी होना अच्छा होता है मूल्यों के रूप में); जब तक आप हैश बदल नहीं सकते हैं, तब तक आप सुरक्षित हैं।)

कोरफाउंडेशन प्रकार ओओ-जैसे प्रकार हैं जिनका उपयोग "सादा" सी में किया जा सकता है। कुछ चालाक जादू का उपयोग करना (ऐप्पल ऐसा कर सकता है क्योंकि वे सीएफ और ओबीजेसी रनटाइम दोनों लिखते हैं), एनएसएसटींग, एनएसएआरएआरई और एनएस डिक्शनरी जैसे प्रकारों के उदाहरण हैं (डिफ़ॉल्ट रूप से) सीएफस्ट्रिंग, सीएफएआरएआरई और सीएफ डिक्शनरी के "वास्तव में" उदाहरण हैं। सीएफ प्रकार एक प्रकार के पदानुक्रम में हैं, जिसकी जड़ CFType है; उल्लेखनीय तरीके CFRetain, CFRelease, CFEqual, CFHash, और CFCopyDescription हैं। ये ढीले रूप से मेल खाते हैं, -इलीज, -इस एक्वाल :, -शैश, और -स्क्रिप्शन (सिवाय इसके कि-डिस्क्रिप्शन अतिरिक्त रूप से स्वत: समाप्त हो गया है, और उनके पास नल/शून्य की अलग-अलग हैंडलिंग है)। ऐप्पल ने यह "टोल-फ्री ब्रिजिंग" या "अदला-बदली डेटा प्रकार" कहा है (आईडीटी लेख अब मैक देव सेंटर पर नहीं है)। Ridiculousfish का एक अच्छा लेख है जिसे "Bridge" कहा जाता है।

इसका मतलब यह है कि आप अधिकांश भाग के लिए सीएफ प्रकारों का इलाज कर सकते हैं जैसे कि वे उद्देश्य-सी ऑब्जेक्ट्स थे। ऐप्पल ने यह विशेष रूप से स्पष्ट नहीं किया है, लेकिन "टोल-फ्री ब्रिजिंग" के सभी उल्लेखों के अलावा, कुछ सामान हैं जो मानते हैं कि वे एक दूसरे के बदले हैं।

  • NSMakeCollectable() एक CFTypeRef लेता है और आईडी रिटर्न (और कचरा संग्रहण, जो iOS पर अप्रासंगिक लेकिन मैक ओएस 10.5+ पर बेहद प्रासंगिक हो सक्षम बनाता है)।
  • @property (nonatomic, retain) __attribute__((NSObject)) ABAddressBookRef foo; जैसे सामग्री प्रभावी ढंग से इसका अर्थ है "इसे भेजें - और कृपया जैसे कि यह एक उद्देश्य-सी उदाहरण था"।
  • CALayer.contents प्रॉपर्टी के पास id टाइप किया गया है, लेकिन यह केवल एकमात्र दस्तावेज वाली चीज है जो CGImageRef है (यह CABackingStore का भी समर्थन करता है, जो है-ड्राउरक्ट: ड्रॉ करता है)।

अतिरिक्त मजेदार चीजें जो आप कर सकते हैं उनमें CFAutorelease परिभाषित करना शामिल है।

+0

धन्यवाद, उत्तर दें! – Cyprian

संबंधित मुद्दे

 संबंधित मुद्दे