objective c मैं किसी प्रोजेक्ट में एक फ़ाइल के लिए एआरसी कैसे अक्षम कर सकता हूं?




objective-c xcode (15)

मैं अपनी परियोजना में सफलतापूर्वक एआरसी का उपयोग कर रहा हूं। हालांकि, मुझे कुछ फाइलों का सामना करना पड़ा है (उदाहरण के लिए, यूनिट परीक्षणों और नकली वस्तुओं में) जहां एआरसी के नियम अभी थोड़ा और नाजुक हैं। मुझे याद है कि प्रति फ़ाइल आधार पर एआरसी को अक्षम करने का एक तरीका था, हालांकि मैं यह विकल्प नहीं ढूंढ पाया।

क्या यह संभव है? मैं प्रति फ़ाइल आधार पर एआरसी कैसे अक्षम करूं?


मुझे लगता है कि अन्य सभी उत्तर एमआरसी (मैनुअल रेफरेंस काउंटर) को अक्षम करने और एआरसी (स्वचालित संदर्भ गणना) को सक्षम करने के तरीके को समझा रहे हैं। बहुसंख्यक फ़ाइलों पर एमआरसी (मैन्युअल संदर्भ गणना) यानी एआरसी (स्वचालित संदर्भ गणना) को अक्षम करने के लिए:

  1. एक्सकोड में लक्ष्य / बिल्ड चरणों / संकलन स्रोतों पर वांछित फ़ाइलों का चयन करें
  2. एंटर दबाए
  3. टाइप-फोब्जेक-आर्क
  4. एंटर दबाएं या हो गया

व्यक्तिगत फ़ाइलों के लिए एआरसी को अक्षम करने के लिए प्रोजेक्ट सेटिंग्स के तहत चरणों का निर्माण करने के लिए जाएं और फिर संकलन स्रोतों पर क्लिक करें।

उस वर्ग की .m फ़ाइल का चयन करें जिसे आप एआरसी अक्षम करना चाहते हैं और संकलक झंडे को -fno-objc-arc पर सेट करें

स्रोत: व्यक्तिगत कक्षा के लिए एआरसी अक्षम करें


एक्सकोड 4.3 के लिए आसान तरीका हो सकता है: संपादित / रिफैक्टर / उद्देश्य-सी एआरसी में कनवर्ट करें, फिर उन फ़ाइलों को चेक करें जिन्हें आप परिवर्तित नहीं करना चाहते हैं। मुझे इस तरह से कंपाइलर ध्वज का उपयोग करने के समान ही मिलता है।


एक्सकोड में विशेष फ़ाइल के लिए एआरसी (स्वचालित संदर्भ गणना) को अक्षम करना संभव है।

लक्ष्य का चयन करें -> चरण बनाएं -> संकलन स्रोत -> फ़ाइल का चयन करें (डबल क्लिक करें) -> पॉप-अप विंडो में "-फनो-ओबीजेसी-आर्क" जोड़ें।

मुझे "पहुंच योग्यता" फ़ाइलों का उपयोग करने में इस स्थिति का सामना करना पड़ा था।

यह नीचे चित्र में दिखाया गया है:


ऐप पर जाएं -> फिर लक्ष्य -> ​​चरण बनाएं -> संकलन स्रोत

अब, उस फ़ाइल का चयन करें जिसमें आप एआरसी को अक्षम करना चाहते हैं

इस स्निपेट को पेस्ट करें "-फनो-ओबीजेसी-आर्क" प्रेस एंटर चिपकाने के बाद

प्रत्येक फ़ाइल में जहां आप एआरसी को अक्षम करना चाहते हैं।


ध्वज जोड़ें "-फनो-ओबीजेसी-आर्क"।

सरल चरणों का पालन करें: ऐप> लक्ष्य> चरण बनाएं> संकलन स्रोत> कक्षा के बाद ध्वज जोड़ें "-फनो-ओबीजेसी-आर्क"


  1. एक्सकोड परियोजना का चयन करें
  2. लक्ष्यों पर जाएं
  3. बिल्ड चरण अनुभाग का चयन करें
  4. बिल्ड चरण अनुभाग के अंदर संकलन स्रोत का चयन करें।
  5. वह फ़ाइल चुनें जिसे आप एआरसी को अक्षम नहीं करना चाहते हैं और add -fno-objc-arc जोड़ें


Build Phases > Compile Sources में बस -fno-objc-arc ध्वज का उपयोग Compile Sources


बहु फ़ाइलों पर एआरसी अक्षम करें :

  1. एक्सकोड में लक्ष्य / बिल्ड चरणों / संकलन स्रोतों पर वांछित फ़ाइलों का चयन करें
  2. एंटर दबाए
  3. टाइप -फनो-ओबीजेसी-आर्क
  4. एंटर दबाएं या हो गया

;)


उन फ़ाइलों के लिए -fno-objc-arc compiler ध्वज जोड़कर अलग-अलग फ़ाइलों के लिए एआरसी को अक्षम करना संभव है।

आप लक्ष्य में कंपाइलर झंडे जोड़ते हैं -> चरण बनाएं -> संकलन स्रोत। आपको कंपाइलर ध्वज के नीचे पंक्ति के दाएं कॉलम पर डबल क्लिक करना होगा। आप फ़ाइलों का चयन करने के लिए cmd बटन दबाकर और फिर ध्वज संपादन बॉक्स लाने के लिए एंटर दबाकर इसे एकाधिक फ़ाइलों में जोड़ सकते हैं। (ध्यान दें कि एकाधिक फ़ाइलों को संपादित करने से पहले से मौजूद किसी भी झंडे को ओवरराइट कर दिया जाएगा।)

मैंने एक नमूना प्रोजेक्ट बनाया है जिसमें एक उदाहरण है: https://github.com/jaminguy/NoArc

अधिक जानकारी के लिए यह उत्तर देखें: कुछ फ़ाइलों के लिए स्वचालित संदर्भ गणना अक्षम करें


इस video में समझाया गया चार अनिवार्य कदम

    //1. Select desired files
    //2. Target/Build Phases/Compile Sources
    //3. Type -fno-objc-arc
    //4. Done

कृपया स्क्रीनशॉट का पालन करें और -nono-objc-arc दर्ज करें


व्यक्तिगत फ़ाइल गैर-आर्क बनाने के लिए यह बहुत आसान तरीका है।

नीचे दिए गए चरणों का पालन करें:

व्यक्तिगत फ़ाइल पर एआरसी अक्षम करें:

  1. एक्सकोड में लक्ष्य / बिल्ड चरणों / संकलन स्रोतों पर वांछित फ़ाइलों का चयन करें

  2. .m फ़ाइल का चयन करें जिसे आप इसे गैर-एआरसी प्रेस एंटर टाइप -फनो-ओबीजेसी-आर्क बनाते हैं

एआरसी परियोजना ध्वज में गैर एआरसी फ़ाइल: -fno-objc-arc

गैर एआरसी परियोजना ध्वज के लिए एआरसी फ़ाइल: -fobjc-arc


अक्षम एआरसी सक्षम करने के लिए चरण के बाद

एक्सकोड प्रोजेक्ट का चयन करें लक्ष्यों पर जाएं बिल्ड चरण अनुभाग का चयन करें बिल्ड चरण अनुभाग के अंदर संकलन स्रोत का चयन करें। वह फ़ाइल चुनें जिसे आप एआरसी को अक्षम नहीं करना चाहते हैं और add -fno-objc-arc जोड़ें


यदि आप एकता का उपयोग कर रहे हैं, तो आपको इसे एक्सकोड में बदलने की आवश्यकता नहीं है, आप एकता के अंदर, विशिष्ट फ़ाइल (ओं) के लिए मेटाडेटा में एक संकलित ध्वज लागू कर सकते हैं। बस उन्हें प्रोजेक्ट पैनल में चुनें, और इंस्पेक्टर पैनल से आवेदन करें। यदि आप क्लाउड बिल्ड का उपयोग करने की योजना बनाते हैं तो यह आवश्यक है।





manual-retain-release