2011-12-26 11 views
6

से निपटने के लिए कैसे करें मेरी परियोजना एआरसी (स्वचालित संदर्भ काउंटर) का उपयोग करती है, इसलिए जब मैं ASIHTTPRequest लाइब्रेरी को आयात करने का प्रयास करता हूं जिसमें 4 कक्षाएं हैं जो उनके कार्यान्वयन में ऑटोरलीज़ कथन में उपयोग की जाती हैं, यहांफ़ाइलें एआरसी सुविधा का समर्थन नहीं करती हैं,

[self setAccessLock:[[[NSRecursiveLock alloc] init] autorelease]]; 

त्रुटि है कि मुझे मिल गया:

ARC forbids explicit message send of autorelease 

इस समस्या को हल करने के लिए मैं क्या करना चाहिए एक उदाहरण है।

उत्तर

14

मुझे समाधान मिला है, मुझे प्रत्येक फ़ाइल के लिए कंपाइलर झंडे में सही झंडे जोड़ने की आवश्यकता है जो एआरसी का समर्थन नहीं करता है। मेरे लिए, मैं एक्सकोड 4.2 का उपयोग करता हूं, इसलिए target -> Build Phases -> Compile Sources के तहत, उस फ़ाइल पर डबल क्लिक करें जिसे आप एआरसी सुविधा अक्षम करना चाहते हैं और Done पर क्लिक करें। और यह हो गया है;)

कृपया ध्यान दें, कि यदि फ़ाइल सूची में मौजूद नहीं है, तो आप इसे + बटन पर क्लिक करके जोड़ सकते हैं और फिर उपरोक्त कार्य कर सकते हैं।

9

अक्षम एआरसी के लिए है कि एक वर्ग

जब आप एक परियोजना एआरसी का उपयोग करने की ओर पलायन, -fobjc-चाप संकलक झंडा सभी ऑब्जेक्टिव-सी स्रोत फ़ाइलों के लिए डिफ़ॉल्ट के रूप में स्थापित किया जाएगा। आप उस वर्ग के लिए -fno-objc-arc कंपाइलर ध्वज का उपयोग करके किसी विशिष्ट वर्ग के लिए एआरसी को अक्षम कर सकते हैं।

एक्सकोड में, लक्ष्य चरण टैब में, स्रोत फ़ाइल सूची प्रकट करने के लिए संकलन स्रोत समूह खोलें। उस फ़ाइल को डबल-क्लिक करें जिसके लिए आप ध्वज सेट करना चाहते हैं, पॉप-अप पैनल में -fno-objc-arc दर्ज करें, फिर संपन्न क्लिक करें।

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