Bagaimana saya bisa menonaktifkan ARC untuk satu file dalam suatu proyek?

1342

Saya berhasil menggunakan ARC dalam proyek saya. Namun, saya telah menjumpai beberapa file (misalnya, dalam tes unit dan objek tiruan) di mana aturan ARC sedikit lebih rapuh saat ini. Saya ingat pernah mendengar bahwa ada cara untuk menonaktifkan ARC pada basis per file, meskipun saya tidak dapat menemukan opsi ini.

Apakah ini mungkin? Bagaimana cara menonaktifkan ARC pada basis per file?

casademora
sumber

Jawaban:

2168

Dimungkinkan untuk menonaktifkan ARC untuk file individual dengan menambahkan -fno-objc-arcflag kompiler untuk file-file tersebut.

Anda menambahkan flag compiler di Target -> Build Phases -> Compile Sources. Anda harus mengklik dua kali pada kolom kanan baris di bawah Compiler Flags . Anda juga dapat menambahkannya ke beberapa file dengan menahan tombol cmd untuk memilih file dan kemudian menekan enter untuk membuka kotak edit bendera. (Perhatikan bahwa mengedit banyak file akan menimpa flag yang mungkin sudah ada.)

Saya membuat contoh proyek yang memiliki contoh: https://github.com/jaminguy/NoArc

xcode

Lihat jawaban ini untuk info lebih lanjut: Nonaktifkan Penghitungan Referensi Otomatis untuk Beberapa File

jaminguy
sumber
58
Jadi, tempat untuk menambahkan bendera ini tidak terlalu intuitif. Tapi, di Xcode 4, dalam fase build, dan kompilasi sumber, sebenarnya ada dua kolom. Satu untuk nama file, dan satu lagi untuk flag kompilasi untuk satu file. Di sinilah Anda memasukkan flag compiler khusus ini.
casademora
3
Bisakah Anda menentukan untuk direktori, yaitu untuk semua file dalam direktori? Bagaimana dengan Grup?
ma11hew28
4
Tidak ada direktori. Hanya satu file pada satu waktu dalam pengaturan build :(
casademora
13
@casademora, Anda tidak bisa mendapatkan cukup upvotes untuk informasi ini. Terima kasih.
theTRON
26
@casademora Anda dapat memilih banyak file sekaligus - tetapi jangan klik dua kali tapi tekan RETURN. kemudian tambahkan saja -fno-objc-arcdan itu akan ditambahkan ke semua file yang dipilih. sunting hanya melihat jawaban di bawah yang satu ini :(
pkyeck
460

Nonaktifkan ARC pada file MULTIPLE:

  1. Pilih file yang diinginkan di Target / Build Phases / Compile Sources di Xcode
  2. TEKAN ENTER
  3. Ketik -fno-objc-arc
  4. Tekan Enter atau Done

;)

masukkan deskripsi gambar di sini

Tibidabo
sumber
2
Terima kasih! Sudah lama mencari fitur ini. Mengklik dua kali tidak berfungsi ketika beberapa baris dipilih, tetapi menekan enter tidak. Sangat aneh.
bobmoff
4
Oh wow. Saya akan menghabiskan semua karma saya untuk memperbaiki ini lagi. Terima kasih telah berbagi!
jemmons
ini sepertinya tidak berfungsi pada Xcode 4.3.3 lagi. klik dua kali atau tekan enter pada file yang dipilih tidak memunculkan dialog untuk menempatkan di -fno-ojbc-arc flag, ada yang punya solusi untuk ini?
tom
Saya memiliki 4.3.3 dan sekarang 4.4 DP7 dan masih berfungsi dengan baik. Coba mulai ulang Xcode, restart mesin dan perbaiki izin.
Tibidabo
44

Untuk Xcode 4.3 cara yang lebih mudah adalah: Edit / Refactor / Konversi ke objektif-C ARC, lalu centang file yang tidak ingin Anda konversi. Saya menemukan cara ini sama dengan menggunakan flag compiler di atas.

Jingjie Zhan
sumber
36

Ini adalah cara yang sangat sederhana untuk membuat file individual non-arc.

Ikuti langkah-langkah di bawah ini:

Nonaktifkan ARC pada file individual:

  1. Pilih file yang diinginkan di Target / Build Phases / Compile Sources di Xcode

  2. Pilih file .m yang Anda inginkan. NON-ARC PRESS ENTER Ketik -fno-objc-arc

File bukan ARC ke bendera proyek ARC: -fno-objc-arc

File ARC ke bendera proyek non ARC: -fobjc-arc

Dipak Narigara
sumber
35

Catatan: jika Anda ingin menonaktifkan ARC untuk banyak file , Anda harus:

  1. buka "Bangun fase" -> "Kompilasi sumber"
  2. pilih file dengan "left_mouse" + "cmd" (untuk file yang terpisah) atau + "shift" (untuk file yang dikelompokkan - pilih pertama dan terakhir)
  3. tekan enter"
  4. tempel -fno-objc-arc
  5. tekan "enter" lagi
  6. keuntungan!
orang yang digipe
sumber
22

Cukup gunakan -fno-objc-arcbendera di Build Phases>Compile Sources

Rahul Gupta
sumber
13
  1. Pilih proyek Xcode
  2. Pergi ke target
  3. Pilih bagian Bangun fase
  4. Di dalam bagian fase pembuatan pilih sumber kompilasi.
  5. Pilih file yang Anda tidak ingin menonaktifkan ARC dan tambahkan -fno-objc-arc

Nonaktifkan ARC untuk file tertentu

pengguna2538944
sumber
13

Dimungkinkan untuk menonaktifkan ARC (Penghitungan Referensi Otomatis) untuk file tertentu dalam Xcode.

Pilih Target -> Bangun Fase -> Kompilasi Sumber -> Pilih File (klik dua kali) -> Tambahkan "-fno-objc-arc" ke jendela pop-up.

Saya mengalami situasi ini dalam menggunakan file "Reachibility".

Ini ditunjukkan pada gambar di bawah ini:

masukkan deskripsi gambar di sini

Jayprakash Dubey
sumber
11

gunakan -fno-objc-arc untuk setiap file dalam fase build

Amit Agrawal
sumber
11

Empat Langkah Wajib seperti yang dijelaskan dalam video ini

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

Silakan Cukup ikuti tangkapan layar dan masukkan -fno-objc-arc .

masukkan deskripsi gambar di sini

Tunvir Rahman Tusher
sumber
6

Jika Anda menggunakan Unity, Anda tidak perlu mengubahnya dalam Xcode, Anda dapat menerapkan flag kompilasi dalam metadata untuk file tertentu, tepat di dalam Unity. Cukup pilih mereka di panel Proyek, dan terapkan dari panel Inspektur. Ini penting jika Anda berencana menggunakan Cloud Build.masukkan deskripsi gambar di sini

tanah penggembalaan
sumber
5

Tambahkan flag “-fno-objc-arc”.

Ikuti langkah-langkah sederhana: Aplikasi> Target> Bangun Fase> Sumber Kompilasi> tambahkan flag setelah kelas “-fno-objc-arc”

Manoj Chandel
sumber
5

Saya pikir semua jawaban lain menjelaskan cara menonaktifkan MRC (Jumlah Referensi Manual) dan mengaktifkan ARC (Jumlah Referensi Otomatis). Untuk menggunakan MRC (Penghitungan Referensi Manual) yaitu Menonaktifkan ARC (Penghitungan Referensi Otomatis) pada file MULTIPLE:

  1. Pilih file yang diinginkan di Target / Build Phases / Compile Sources di Xcode
  2. TEKAN ENTER
  3. Ketik -fobjc-arc
  4. Tekan Enter atau Done
Vin
sumber
2

Cukup gunakan flag -fno-objc-arc di Build Phases> Compile Sources di depan file yang Anda tidak ingin ARC diterapkan.

C_compnay
sumber
-1
  1. pilih proyek -> target -> bangun fase -> sumber kompiler
  2. pilih file -> flag compiler
  3. tambahkan -fno-objc-arc
Mnsd
sumber
-2

PERGI ke Aplikasi -> lalu Target -> Bangun Fase -> Kompilasi Sumber

Sekarang, Pilih file di mana Anda ingin menonaktifkan ARC

rekatkan cuplikan ini "-fno-objc-arc" Setelah menempelkan tekan ENTER

di setiap file tempat Anda ingin menonaktifkan ARC.

adijazz91
sumber
5
jawaban Anda tidak memberikan tambahan apa pun untuk pertanyaan lama ini.
vikingosegundo
-2

Ikuti langkah-langkah untuk mengaktifkan menonaktifkan ARC

Pilih proyek Xcode Pergi ke target Pilih bagian Fase pembuatan Di dalam bagian fase pembuatan pilih sumber kompilasi. Pilih file yang Anda tidak ingin menonaktifkan ARC dan tambahkan -fno-objc-arc

annu
sumber
1
jawaban Anda tidak memberikan tambahan apa pun untuk pertanyaan lama ini.
jomafer
Apa kebutuhan tambahan. jika Anda tahu lebih baik daripada memberi kami.
annu
Saya tidak menurunkan suara Anda. Hanya saja pertanyaan ini ditanyakan pada 11 Juli '11 pada jam 5:21. Ada terlalu banyak jawaban dengan jawaban yang sama yang tidak menambahkan informasi yang berguna ... Saya curiga ada seseorang yang menurunkan Anda karena alasan itu ...
jomafer
dapatkah Anda memberi saya penjelasan singkat tentangnya?
annu