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


1341

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

क्या यह संभव है? मैं प्रति फ़ाइल आधार पर ARC को कैसे निष्क्रिय कर सकता हूँ?


जवाबों:


2167

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

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

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

xcode

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


57
इसलिए, इस ध्वज को जोड़ने का स्थान बहुत सहज नहीं है। लेकिन, एक्सकोड 4 में, चरणों के निर्माण में, और सूत्रों का संकलन, वास्तव में दो कॉलम हैं। एक फ़ाइल नाम के लिए, और दूसरा उस एक फ़ाइल के लिए संकलित झंडे के लिए। यह वह जगह है जहाँ आप इस विशिष्ट संकलक ध्वज को दर्ज करते हैं।
कैसिडोरा जूल

3
क्या आप एक निर्देशिका के लिए निर्दिष्ट कर सकते हैं, यानी, एक निर्देशिका में सभी फ़ाइलों के लिए? एक समूह के बारे में क्या?
13:11 बजे ma11hew28

4
कोई निर्देशिका नहीं। बिल्ड सेटिंग्स में एक बार में केवल एक ही फाइल :(
शिक्षाविद्या

13
@ शिक्षाविद आपको इस जानकारी के लिए पर्याप्त उत्थान नहीं दे सकते। धन्यवाद।
TheTRON

26
@ शिक्षाविद आप एक ही बार में कई फ़ाइलों का चयन कर सकते हैं - लेकिन फिर डबल क्लिक करें लेकिन हिट नहीं करें। तब बस जोड़ें -fno-objc-arcऔर इसे सभी चयनित फ़ाइलों में जोड़ा जाएगा। संपादित करें बस इस एक के नीचे जवाब देखा :(
pkyeck

460

MULTIPLE फ़ाइलों पर ARC अक्षम करें :

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

;)

यहां छवि विवरण दर्ज करें


2
धन्यवाद! लंबे समय से इस फीचर की तलाश में थे। कई पंक्तियों को चुनने पर डबल-क्लिक नहीं करता है, लेकिन एंटर दबाता है। बहुत अजीब।
bobmoff

4
ओह वाह। मैं फिर से इसे बढ़ाने के लिए अपने सारे कर्म खर्च करूँगा। साझा करने के लिए धन्यवाद!
शाम 06:59 पर jemmons

यह Xcode 4.3.3 पर अब काम नहीं करता है। चयनित फ़ाइलों पर डबल क्लिक या प्रेस दर्ज -fno-ojbc-arc ध्वज में डालने के लिए संवाद नहीं लाता है, किसी को भी इसके लिए एक समाधान है?
टॉम

मेरे पास 4.3.3 और अब 4.4 डीपी 7 था और यह अभी भी ठीक काम करता है। Xcode को पुनरारंभ करने, मशीन को फिर से शुरू करने और अनुमतियों को सुधारने का प्रयास करें।
टिबिडाबो

44

Xcode 4.3 के लिए सबसे आसान तरीका हो सकता है: Edit / Refactor / Convert to ऑब्जेक्टिव-सी ARC, फिर उन फ़ाइलों की जाँच करें जिन्हें आप कनवर्ट नहीं करना चाहते हैं। मैं इस तरह से ऊपर संकलक ध्वज का उपयोग कर के रूप में मिल जाए।


36

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

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

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

  1. Xcode में टारगेट / बिल्ड फेज / कम्पाइल सोर्स के वांछित फाइल का चयन करें

  2. .M फाइल का चयन करें, जिसे आप चाहते हैं कि वह NON-ARC PRESS ENTER टाइप करें -fno-objc-arc

एआरसी प्रोजेक्ट ध्वज को गैर एआरसी फ़ाइल: -fno-objc-arc

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


35

नोट: यदि आप कई फ़ाइलों के लिए ARC को अक्षम करना चाहते हैं , तो आपको निम्न करना होगा:

  1. खुला "बिल्ड चरणों" -> "संकलन स्रोत"
  2. साथ फ़ाइलों का चयन "left_mouse" + "cmd" (अलग फ़ाइलों के लिए) या + "बदलाव" (वर्गीकृत किया फ़ाइलों के लिए - पहली और आखिरी चुनें)
  3. एंटर दबाए"
  4. पेस्ट -fno-objc-arc
  5. फिर से "एंटर" दबाएं
  6. फायदा!


13
  1. Xcode प्रोजेक्ट चुनें
  2. निशाने पर जाओ
  3. बिल्ड चरणों का चयन करें
  4. बिल्ड चरणों के अंदर संकलित स्रोतों का चयन करें।
  5. उस फ़ाइल का चयन करें जिसे आप ARC और add -fno-objc-arc को निष्क्रिय नहीं करना चाहते हैं

किसी विशेष फ़ाइल के लिए ARC अक्षम करें


13

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

लक्ष्य चुनें -> चरण बनाएँ -> संकलन सूत्र -> फ़ाइल चुनें (डबल क्लिक करें) -> पॉप-अप विंडो में "-fno-objc-arc" जोड़ें।

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

यह नीचे दिए गए आंकड़े में दिखाया गया है:

यहां छवि विवरण दर्ज करें



11

इस वीडियो में बताया गया चार अनिवार्य कदम

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


6

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


5

झंडा जोड़ें "-fno-objc- आर्क"।

सरल चरणों का पालन करें: एप्लिकेशन> लक्ष्य> चरण बनाएं> संकलन स्रोत> वर्ग "-fno-objc-arc" के बाद ध्वज जोड़ें


5

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

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

2

बिल्ड चरणों में -fno-objc-arc फ्लैग का उपयोग करें> संकलित स्रोत उन फ़ाइलों का उल्लंघन करते हैं, जिनके लिए आप ARC को लागू नहीं करना चाहते हैं।


-1
  1. परियोजना का चयन करें -> लक्ष्य -> ​​निर्माण चरण -> संकलक स्रोत
  2. फ़ाइल का चयन करें -> संकलक झंडे
  3. add -fno-objc-arc

-2

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

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

इस स्निपेट को चिपकाएँ "-fno-objc-arc" एंटर करने के बाद एंटर दबाएँ

प्रत्येक फ़ाइल में जहाँ आप ARC को निष्क्रिय करना चाहते हैं।


5
आपका उत्तर इस पुराने प्रश्न को कोई जोड़ नहीं देता है।
vikingosegundo

-2

ARC को अक्षम करने में सक्षम करने के लिए चरण का अनुसरण करें

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


1
आपका उत्तर इस पुराने प्रश्न को कोई जोड़ नहीं देता है।
jomafer

इसके अतिरिक्त और क्या चाहिए। यदि आप हमें प्रदान करने से बेहतर जानते हैं।
अन्नू

मैंने आपको निराश नहीं किया। यह सिर्फ यह सवाल है कि जुलाई 11 '11 में 5:21 पर पूछा गया था। एक ही जवाब के साथ बहुत सारे उत्तर हैं जो किसी भी उपयोगी जानकारी को नहीं जोड़ते हैं ... मुझे संदेह है कि कोई आपको उस कारण से
निराश करता है

क्या आप मुझे इसके बारे में कुछ जानकारी दे सकते हैं।
अन्नू
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.