Pembaruan untuk Xcode 5 & iOS 7
catatan: untuk solusi Xcode 7 / Swift 2.1 untuk menghapus pernyataan print () dalam rilis build, temukan jawaban saya di sini .
Ya, Anda harus menghapus pernyataan NSLog apa pun dalam kode rilis Anda, karena itu hanya memperlambat kode Anda, dan tidak ada gunanya dalam versi rilis. Untungnya, di Xcode 5 (iOS 7), sangat mudah untuk menghapus semua pernyataan NSLog Anda 'secara otomatis' dalam build rilis. Jadi mengapa tidak melakukannya.
Pertama, 3 langkah yang harus diambil, lalu beberapa penjelasan
1) di proyek Xcode Anda, cari file 'yourProjectName-prefix.pch' (biasanya Anda akan menemukannya di bawah grup 'file pendukung', di mana file main.m Anda berada
2) tambahkan 3 baris ini di akhir file '.pch':
#ifndef DEBUG
#define NSLog(...);
#endif
3) uji perbedaan antara versi 'debug' dan 'rilis' Anda. Salah satu cara untuk melakukannya adalah melalui 'edit skema' -> 'jalankan nama aplikasi' -> di bawah tab 'info' pilih menggunakan kotak drop-down antara debug & rilis. Dalam versi rilis, Anda tidak akan melihat keluaran NSLog di konsol debug!
bagaimana ini semua bekerja?
Pertama-tama, kita harus tahu bahwa preprocessor relatif 'dumb', dan hanya bertindak sebagai 'text replacer' sebelum compiler dipanggil. Ini menggantikan apa pun yang Anda '#definikan' dengan apa yang mengikuti #define
pernyataan tersebut.
#define NSLog(...);
The (...)
singkatan dari 'sesuatu' antara kurung (). Pikiran juga ;
di akhir. Ini tidak benar-benar diperlukan karena kompiler akan mengoptimalkannya, tetapi saya ingin meletakkannya di sana, karena ini lebih 'benar'. Setelah kita #define
tidak ada 'nothing', maka preprocessor akan menggantinya dengan 'nothing', dan itu hanya akan membuang baris lengkapnya, mulai dari NSLog...
sampai dan termasuk ;
.
mendefinisikan pernyataan dapat dibuat bersyarat menggunakan #ifdef
(jika ditentukan) atau #ifndef
(jika tidak ditentukan)
di sini kami menulis #ifndef DEBUG
, yang artinya 'jika simbol DEBUG tidak ditentukan'. The #ifdef
atau #ifndef
kebutuhan untuk menjadi 'tertutup' dengan#endif
Xcode 5 secara default mendefinisikan simbol 'DEBUG' untuk kita ketika mode de build adalah 'DEBUG'. Dalam 'rilis' ini tidak ditentukan. Anda dapat memverifikasi ini di bawah pengaturan proyek Anda, tab 'Build settings' -> gulir ke bawah ke bagian 'Apple LLVM 5.0 - Preprocessing' -> makro preprocessor. Anda akan melihat bahwa simbol 'DEBUG' tidak ditentukan untuk rilis build!
akhirnya, file .pch dibuat oleh Xcode secara otomatis, dan secara otomatis disertakan dalam setiap file sumber selama waktu kompilasi. Jadi seolah-olah Anda akan memasukkan #define
semuanya ke dalam setiap file sumber Anda.