ฉันจะปิดการใช้งาน ARC สำหรับไฟล์เดียวในโครงการได้อย่างไร


1342

ฉันใช้ ARC สำเร็จในโครงการของฉัน อย่างไรก็ตามฉันได้พบกับไฟล์ไม่กี่ไฟล์ (เช่นในการทดสอบหน่วยและวัตถุจำลอง) ซึ่งกฎของ ARC มีความเปราะบางมากขึ้นในขณะนี้ ฉันจำได้ว่าได้ยินว่ามีวิธีปิดใช้งาน ARC แบบต่อไฟล์ แต่ฉันไม่พบตัวเลือกนี้

เป็นไปได้ไหม ฉันจะปิดการใช้งาน ARC บนพื้นฐานต่อไฟล์ได้อย่างไร


คำตอบ:


2168

เป็นไปได้ที่จะปิดการใช้งาน ARC สำหรับแต่ละไฟล์โดยเพิ่ม-fno-objc-arcแฟล็กคอมไพเลอร์สำหรับไฟล์เหล่านั้น

คุณเพิ่มธงคอมไพเลอร์ในเป้าหมาย -> สร้างเฟส -> แหล่งรวบรวม คุณต้องดับเบิลคลิกที่คอลัมน์ด้านขวาของแถวที่อยู่ภายใต้ธงคอมไพเลอร์ คุณยังสามารถเพิ่มลงในไฟล์หลาย ๆ ไฟล์ได้โดยกดปุ่ม cmd ค้างไว้เพื่อเลือกไฟล์จากนั้นกด Enter เพื่อเปิดกล่องแก้ไขค่าสถานะ (โปรดทราบว่าการแก้ไขหลายไฟล์จะเขียนทับการตั้งค่าสถานะใด ๆ ที่อาจมีอยู่แล้ว)

ฉันสร้างโครงการตัวอย่างที่มีตัวอย่าง: https://github.com/jaminguy/NoArc

Xcode

ดูคำตอบนี้สำหรับข้อมูลเพิ่มเติม: ปิดใช้งานการนับการอ้างอิงอัตโนมัติสำหรับบางไฟล์


58
ดังนั้นสถานที่ในการเพิ่มธงนี้จึงไม่ง่ายนัก แต่ใน Xcode 4 ในเฟสการสร้างและแหล่งที่รวบรวมมีจริงสองคอลัมน์ อีกอันหนึ่งสำหรับชื่อไฟล์และอีกอันสำหรับแฟล็กการคอมไพล์สำหรับหนึ่งไฟล์ นี่คือที่ที่คุณป้อนแฟล็กคอมไพเลอร์นี้โดยเฉพาะ
casademora

3
คุณสามารถระบุไดเรกทอรีเช่นแฟ้มทั้งหมดในไดเรกทอรีได้หรือไม่? แล้วกลุ่มล่ะ?
ma11hew28

4
ไม่มีไดเรกทอรี ไฟล์เดียวเท่านั้นในแต่ละครั้งในการตั้งค่าการสร้าง :(
casademora

13
@casademora คุณไม่สามารถรับ upvotes ได้มากพอสำหรับข้อมูลชิ้นนี้ ขอบคุณ.
theTRON

26
@casademora คุณสามารถเลือกหลายไฟล์พร้อมกัน - แต่อย่าคลิกสองครั้ง แต่กด RETURN จากนั้นเพิ่ม-fno-objc-arcและมันจะถูกเพิ่มลงในไฟล์ที่เลือก แก้ไขเพิ่งเห็นคำตอบด้านล่างนี้ :(
pkyeck

460

ปิดการใช้งาน ARCในไฟล์ MULTIPLE:

  1. เลือกไฟล์ที่ต้องการที่เป้าหมาย / สร้างเฟส / คอมไพล์ซอร์สใน Xcode
  2. กดปุ่มตกลง
  3. พิมพ์-fno-objc-arc
  4. กดEnterหรือเสร็จสิ้น

;)

ป้อนคำอธิบายรูปภาพที่นี่


2
ขอบคุณ! เคยมองหาคุณสมบัตินี้มานานแล้ว การคลิกสองครั้งไม่ทำงานเมื่อเลือกหลายแถว แต่การกด Enter จะไม่ทำงาน แปลกมาก
bobmoff

4
โอ้ว้าว. ฉันจะใช้กรรมทั้งหมดของฉันเพื่อโหวตมันอีกครั้ง ขอบคุณสำหรับการแบ่งปัน!
jemmons

ดูเหมือนว่าจะไม่ทำงานกับ Xcode 4.3.3 อีกต่อไป ดับเบิลคลิกหรือกด Enter บนไฟล์ที่เลือกไม่ได้แสดงกล่องโต้ตอบสำหรับใส่ในแฟล็ก -fno-ojbc-arc ทุกคนมีวิธีแก้ปัญหาสำหรับเรื่องนี้?
ทอม

ฉันมี 4.3.3 และตอนนี้ 4.4 DP7 และมันก็ใช้ได้ดี ลองรีสตาร์ท Xcode รีสตาร์ทเครื่องและแก้ไขการอนุญาต
Tibidabo

44

สำหรับ Xcode 4.3 วิธีที่ง่ายกว่าอาจเป็น: แก้ไข / ปรับโครงสร้าง / แปลงเป็นอาร์ค -C ARC จากนั้นตรวจสอบไฟล์ที่คุณไม่ต้องการแปลง ฉันพบว่าวิธีนี้เหมือนกับการใช้ธงคอมไพเลอร์ด้านบน


36

มันเป็นวิธีที่ง่ายมากที่จะทำให้แต่ละไฟล์ไม่ใช่ส่วนโค้ง

ทำตามขั้นตอนด้านล่าง:

ปิดการใช้งาน ARC ในแต่ละไฟล์:

  1. เลือกไฟล์ที่ต้องการที่เป้าหมาย / สร้างเฟส / คอมไพล์ซอร์สใน Xcode

  2. เลือกไฟล์. m ที่คุณต้องการให้เป็นแบบกด NON-ARC ชนิดป้อน-fno-objc-arc

ไฟล์ ARC ที่ไม่ใช่ไปยังแฟล็กโครงการ ARC: -fno-objc-arc

ไฟล์ ARC เป็นแฟล็กโครงการที่ไม่ใช่ ARC: -fobjc-arc


35

หมายเหตุ: หากคุณต้องการปิดการใช้งาน ARC สำหรับไฟล์จำนวนมากคุณต้อง:

  1. เปิด "สร้างเฟส" -> "รวบรวมแหล่งที่มา"
  2. เลือกไฟล์ที่มี"left_mouse" + "cmd" (สำหรับไฟล์แยก) หรือ+ "shift" (สำหรับไฟล์ที่จัดกลุ่ม - เลือกแรกและสุดท้าย)
  3. กดปุ่มตกลง"
  4. วาง -fno-objc-arc
  5. กด "Enter" อีกครั้ง
  6. กำไร!


13
  1. เลือกโครงการ Xcode
  2. ไปที่เป้าหมาย
  3. เลือกส่วน Build phases
  4. ภายในส่วนการสร้างเฟสเลือกแหล่งรวบรวม
  5. เลือกไฟล์ที่คุณไม่ต้องการปิดการใช้งาน ARC และเพิ่ม -fno-objc-arc

ปิดใช้งาน ARC สำหรับไฟล์เฉพาะ


13

เป็นไปได้ที่จะปิดการใช้งาน ARC (การอ้างอิงโดยอัตโนมัติ) สำหรับไฟล์เฉพาะใน Xcode

เลือกเป้าหมาย -> สร้างเฟส -> รวบรวมแหล่งที่มา -> เลือกไฟล์ (ดับเบิลคลิก) -> เพิ่ม "-fno-objc-arc" ในหน้าต่างป๊อปอัป

ฉันพบสถานการณ์นี้ในการใช้ไฟล์ "การเข้าถึง"

ดังแสดงในรูปด้านล่าง:

ป้อนคำอธิบายรูปภาพที่นี่





6

หากคุณกำลังใช้ Unity คุณไม่จำเป็นต้องเปลี่ยนแปลงสิ่งนี้ใน Xcode คุณสามารถใช้การคอมไพล์แฟล็กในเมทาดาทาสำหรับไฟล์ที่ต้องการได้ภายใน Unity เพียงเลือกพวกเขาในแผงโครงการและนำไปใช้จากแผงตรวจสอบ นี่เป็นสิ่งสำคัญหากคุณวางแผนที่จะใช้ Cloud Buildป้อนคำอธิบายรูปภาพที่นี่


5

เพิ่มธง“ -fno-objc-arc”

ขั้นตอนง่าย ๆ ดังนี้: แอป> เป้าหมาย> บิลด์เฟส> คอมไพล์ซอร์ส> เพิ่มแฟล็กหลังคลาส“ -fno-objc-arc”


5

ฉันคิดว่าคำตอบอื่น ๆ ทั้งหมดกำลังอธิบายวิธีปิดใช้งาน MRC (จำนวนการอ้างอิงด้วยตนเอง) และการเปิดใช้งาน ARC (การอ้างอิงโดยอัตโนมัติ) ในการใช้ MRC (จำนวนการอ้างอิงด้วยตนเอง) เช่นการปิดใช้งาน ARC (การอ้างอิงจำนวนอัตโนมัติ) ในไฟล์ MULTIPLE:

  1. เลือกไฟล์ที่ต้องการที่เป้าหมาย / สร้างเฟส / คอมไพล์ซอร์สใน Xcode
  2. กดปุ่มตกลง
  3. ประเภท -fobjc-arc
  4. กด Enter หรือเสร็จสิ้น

2

เพียงใช้แฟล็ก -fno-objc-arc ใน Build Phases> Compile Sources หน้าไฟล์ที่คุณไม่ต้องการให้ ARC ใช้


-1
  1. เลือกโครงการ -> เป้าหมาย -> สร้างเฟส -> แหล่งคอมไพเลอร์
  2. เลือกไฟล์ -> ธงคอมไพเลอร์
  3. เพิ่ม -fno-objc-arc

-2

ไปที่แอพ -> จากนั้นเป้าหมาย -> บิลด์เฟส -> คอมไพล์ซอร์ส

ตอนนี้เลือกไฟล์ที่คุณต้องการปิดการใช้งาน ARC

วางตัวอย่างนี้ "-fno-objc-arc" หลังจากวางกด ENTER

ในแต่ละไฟล์ที่คุณต้องการปิดการใช้งาน ARC


5
คำตอบของคุณไม่ได้ให้คำถามเพิ่มเติมนอกเหนือจากนี้
vikingosegundo

-2

ทำตามขั้นตอนเพื่อเปิดใช้งานการปิดใช้งาน ARC

เลือกโครงการ Xcode ไปที่เป้าหมายเลือกส่วนสร้างเฟสภายในส่วนเฟสสร้างสร้างเลือกแหล่งรวบรวม เลือกไฟล์ที่คุณไม่ต้องการปิดการใช้งาน ARC และเพิ่ม -fno-objc-arc


1
คำตอบของคุณไม่ได้ให้คำถามเพิ่มเติมนอกเหนือจากนี้
jomafer

นอกจากนี้ต้องมีอะไรบ้าง ถ้าคุณรู้ดีกว่าให้เรา
annu

ฉันไม่ได้ลงคะแนนคุณ มันเป็นเพียงคำถามนี้ถูกถามในวันที่ 11 ก.ค. 11 เวลา 5:21 น. มีคำตอบจำนวนมากเกินไปที่มีคำตอบเดียวกับที่ไม่เพิ่มข้อมูลที่เป็นประโยชน์ ... ฉันสงสัยว่ามีบางคนลงคะแนนให้คุณด้วยเหตุผลนั้น ...
jomafer

คุณช่วยบอกฉันสั้น ๆ หน่อยได้ไหม
annu
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.