Bir projedeki tek bir dosya için ARC'yi nasıl devre dışı bırakabilirim?


1342

ARC'yi projemde başarıyla kullanıyorum. Ancak, ARC kurallarının şu anda biraz daha kırılgan olduğu birkaç dosyayla (örneğin, birim testlerinde ve sahte nesnelerde) karşılaştım. Bu seçeneği bulamadım, ancak dosya başına ARC'yi devre dışı bırakmanın bir yolu olduğunu duydum.

Mümkün mü? ARC'yi dosya başına nasıl devre dışı bırakabilirim?


Yanıtlar:


2168

Bu dosyalar için -fno-objc-arcderleyici bayrağı ekleyerek ARC'yi tek tek dosyalar için devre dışı bırakmak mümkündür .

Derleyici bayraklarını Hedefler -> Derleme Aşamaları -> Derleme Kaynakları'na eklersiniz. Derleyici Bayrakları altındaki satırın sağ sütununa çift tıklamanız gerekir . Ayrıca, dosyaları seçmek için cmd düğmesini basılı tutup ardından bayrak düzenleme kutusunu getirmek için enter tuşuna basarak birden fazla dosyaya ekleyebilirsiniz. (Birden çok dosyayı düzenlemenin, önceden sahip olabileceği bayrakların üzerine yazacağını unutmayın.)

Bir örneği olan örnek bir proje oluşturdum: https://github.com/jaminguy/NoArc

xcode

Daha fazla bilgi için bu cevaba bakın: Bazı Dosyalar için Otomatik Referans Saymayı Devre Dışı Bırakma


58
Yani, bu bayrağı eklemek için yer çok sezgisel değil. Ancak, Xcode 4'te derleme aşamalarında ve derleme kaynaklarında aslında iki sütun vardır. Biri dosya adı için, diğeri o dosya için derleme bayrakları için. Bu özel derleyici bayrağını buraya girersiniz.
casademora

3
Bir dizini, yani bir dizindeki tüm dosyaları belirtebilir misiniz? Bir Gruba ne dersiniz?
ma11hew28

4
Dizin yok. Derleme ayarlarında bir kerede yalnızca bir dosya :(
casademora

13
@casademora bu bilgi için yeterli oy alamazsınız. Teşekkür ederim.
theTRON

26
@casademora aynı anda birden fazla dosya seçebilirsiniz - ancak sonra iki kere tıklamayın, ancak RETURN tuşuna basın. sonra ekleyin -fno-objc-arcve seçilen tüm dosyalara eklenir. düzenlemek sadece bu cevabı gördüm :(
pkyeck

460

Devre Dışı ARC üzerinde BİRDEN dosyalar:

  1. Xcode'da Hedef / Derleme Aşamaları / Derleme Kaynakları'nda istediğiniz dosyaları seçin
  2. ENTER TUŞUNA BASIN
  3. Tip -fno-objc-yay
  4. Enter veya Done tuşuna basın

;)

resim açıklamasını buraya girin


2
Teşekkür! Bu özelliği uzun zamandır arıyoruz. Birden çok satır seçildiğinde çift tıklama çalışmaz, ancak enter tuşuna basıldığında çalışır. Çok garip.
bobmoff

4
Vay canına. Bütün karmalarımı tekrar değerlendirmek için harcıyorum. Paylaşım için teşekkürler!
jemmons

bu artık Xcode 4.3.3 üzerinde çalışmıyor gibi görünüyor. seçili dosyalar üzerinde çift tıklayın veya enter tuşuna basın -fno-ojbc-arc bayrağını koymak için iletişim kutusunu açmaz, kimse bunun için bir geçici çözüm var mı?
tom

4.3.3 ve şimdi 4.4 DP7 vardı ve hala iyi çalışıyor. Xcode'u yeniden başlatmayı, makineyi yeniden başlatmayı ve onarım izinlerini deneyin.
Tibidabo

44

Xcode 4.3 için daha kolay bir yol olabilir: Düzenle / Refactor / objektif-ARC'ye Dönüştür, sonra dönüştürülmesini istemediğiniz dosyaları işaretleyin. Bu yolu yukarıdaki derleyici bayrağını kullanmakla aynı şekilde buluyorum.


36

Bireysel dosyayı ark yapmaz hale getirmenin çok basit bir yoludur.

Aşağıdaki adımları izleyin:

Tek dosyada ARC'yi devre dışı bırak:

  1. Xcode'da Hedef / Derleme Aşamaları / Derleme Kaynakları'nda istediğiniz dosyaları seçin

  2. İstediğiniz .m dosyasını seçin ARC OLMAYAN BASIN GİRİŞ Türü -fno-objc-arc

ARC olmayan dosyadan ARC proje bayrağına: -fno-objc-arc

ARC dosyası olmayan ARC proje bayrağı: -fobjc-arc


35

Not: ARC'yi birçok dosya için devre dışı bırakmak istiyorsanız , şunları yapmanız gerekir:

  1. "Yapı aşamaları" nı açın -> "Kaynakları derleyin"
  2. ile dosyaları seçin "left_mouse" + "cmd" (ayrılmış dosyalar için) ya da + "kayma" (gruplandırılmış dosyalar için - İlk ve son seç)
  3. Enter tuşuna basın"
  4. yapıştırmak -fno-objc-arc
  5. tekrar "enter" tuşuna basın
  6. kar!

22

Sadece kullanmak -fno-objc-arcbayrağı Build Phases>Compile Sources


13
  1. Xcode projesini seçin
  2. Hedeflere git
  3. Yapı aşamaları bölümünü seçin
  4. Derleme aşamaları bölümünde derleme kaynaklarını seçin.
  5. ARC'yi devre dışı bırakmak istemediğiniz dosyayı seçin ve -fno-objc-arc ekleyin

Belirli bir dosya için ARC'yi devre dışı bırak


13

Xcode'daki belirli bir dosya için ARC'yi (Otomatik Referans Sayma) devre dışı bırakmak mümkündür.

Hedef -> Derleme Aşamaları -> Kaynakları Derle -> Dosya Seç (çift tıklayın) -> Açılır pencereye "-fno-objc-arc" ekle.

"Ulaşılabilirlik" dosyalarını kullanırken bu durumla karşılaştım.

Bu aşağıdaki şekilde gösterilmiştir:

resim açıklamasını buraya girin



11

Bu videoda açıklanan dört Zorunlu Adım

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


6

Unity kullanıyorsanız, bunu Xcode'da değiştirmeniz gerekmez, belirli dosya (lar) için meta verilerinde, Unity'nin içinde derleme bayrağı uygulayabilirsiniz. Bunları Proje panelinde seçin ve Müfettiş panelinden uygulayın. Cloud Build'ı kullanmayı planlıyorsanız bu çok önemlidir.resim açıklamasını buraya girin


5

“-Fno-objc-arc” bayrağı ekleyin.

Basit takip adımları: Uygulama> Hedefler> Aşamaları Oluştur> Kaynakları Derle> “-fno-objc-arc” dersten sonra bayrak ekle


5

Diğer tüm cevapların MRC'nin (Manuel Referans Sayısı) nasıl devre dışı bırakılacağını ve ARC'nin (Otomatik Referans Sayısı) nasıl etkinleştirileceğini açıkladığını düşünüyorum. MRC (Manuel Referans Sayısı) yani MULTIPLE dosyalarında ARC'yi (Otomatik Referans Sayısı) Devre Dışı Bırakma:

  1. Xcode'da Hedef / Derleme Aşamaları / Derleme Kaynakları'nda istediğiniz dosyaları seçin
  2. ENTER TUŞUNA BASIN
  3. Tür -fobjc-arc
  4. Enter veya Done tuşuna basın

2

ARC'nin uygulanmasını istemediğiniz dosyaların önündeki Derleme Aşamaları> Kaynakları Derle'de -fno-objc-arc işaretini kullanmanız yeterlidir.


-1
  1. proje seç -> hedefler -> fazlar inşa et -> derleyici kaynakları
  2. dosya seç -> derleyici bayrakları
  3. -fno-objc-arc ekle

-2

Uygulamaya GİT -> sonra Hedefler -> Aşama Oluşturma -> Kaynak Derleme

Şimdi, ARC'yi devre dışı bırakmak istediğiniz dosyayı seçin

bu pasajı yapıştır "-fno-objc-arc" Yapıştırdıktan sonra ENTER tuşuna basın

ARC'yi devre dışı bırakmak istediğiniz her dosyada.


5
cevabınız bu eski soruya herhangi bir katkı sağlamaz.
vikingosegundo

-2

ARC'yi devre dışı bırakmayı etkinleştirmek için Adım

Xcode projesini seçin Hedeflere git İnşa aşamaları bölümünü seçin İnşa aşamaları bölümünde derleme kaynaklarını seçin. ARC'yi devre dışı bırakmak istemediğiniz dosyayı seçin ve -fno-objc-arc ekleyin


1
cevabınız bu eski soruya herhangi bir katkı sağlamaz.
jomafer

Ne eklenmesi gerekir. bize daha iyi biliyorsan.
annu

Seni küçümsemedim. Sadece bu soru 11: 11'de 5: 21'de soruldu. Aynı yanıta çok fazla yararlı bilgi eklemeyen çok sayıda cevap var ... Birisinin sizi bu nedenle küçümsediğinden şüpheleniyorum ...
jomafer

bana biraz bilgi verebilir misin?
annu
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.