Sebelum cepat saya akan mendefinisikan satu set skema untuk membangun alpha, beta, dan distribusi. Masing-masing skema ini akan memiliki satu set makro yang didefinisikan untuk gerbang perilaku tertentu di tingkat proyek. Contoh paling sederhana adalah DEBUG = 1 makro yang ditentukan secara default untuk semua proyek Xcode dalam skema default untuk Run build. Orang dapat meminta #jika DEBUG ... dan membuat keputusan dalam kode yang sesuai, bahkan mengumpulkan kode yang tidak perlu.
Tampaknya jenis konfigurasi gating ini tidak semudah menggunakan swift, karena makro tidak didukung. Adakah yang bisa menyarankan pendekatan yang sebanding, saya tidak peduli jika kode tersebut dikompilasi, per se. Saya ingin mem-gerbang fitur berdasarkan skema bangun.
$(inherited)
digunakan dalam pengaturan target untuk mewarisi pengaturan proyek.$(inherited)
membuat komentar saya tidak relevan, terima kasih!Kami mengalami masalah dengan tidak ingin menetapkan flag compiler swift karena kami tidak ingin harus mengaturnya dan tetap memperbaruinya untuk target yang berbeda dll. Juga, dalam basis kode campuran kami, kami tidak ingin mengingat untuk mengatur bendera kami secara tepat setiap waktu untuk setiap bahasa.
Untuk kami, kami mendeklarasikan file di ObjC
PreProcessorMacros.h
Dalam .m
PreProcessorMacros.m
Kemudian, di Header Bridging Objective-C Anda
Sekarang, gunakan ini di basis kode Swift Anda
Ini jelas merupakan solusi, tetapi itu memecahkan masalah kami jadi saya mempostingnya di sini dengan harapan itu akan membantu. Ini tidak dimaksudkan untuk menyarankan bahwa jawaban yang ada tidak valid.
sumber
Solusi yang lebih cepat untuk metode Logans. Set
-D DEBUG
diOther Swift Flags
dariSwift Compiler - Custom Flags
bagian dalam pengaturan membangun dari target Anda.Kemudian nyatakan metode berikut dalam lingkup global:
Sekarang gunakan sebagai
sumber
Bagi saya, setel item debug " Kondisi Kompilasi Aktif " ke "DEBUG" berfungsi.
Kemudian menggunakan kerja kunci DEBGU di #Jika DEBUG bekerja dalam mode debug dan #ELSE dalam mode rilis:
Gunakan hanya sebagai berikut:
sumber
Saya bekerja di basis kode bahasa campuran di mana kode obj-c menggunakan makro untuk mengirim pesan debug ke konsol (dan makro itu bergantung pada flag preprocessor debug kami). Saya ingin dapat memanggil makro yang sama dalam kode cepat ...
Agak menyebalkan bahwa saya tidak bisa memanggil makro langsung ke atas di kode cepat, tapi setidaknya sekarang saya hanya punya satu tempat di proyek untuk khawatir mengaktifkan / menonaktifkan flag debug saya.
sumber