Оновлення для Xcode 5 та iOS 7
Примітка: для рішення Xcode 7 / Swift 2.1 для видалення операторів print () у версії випуску знайдіть тут свою відповідь .
Так, ви повинні видалити будь-яку заяву NSLog з коду випуску, оскільки це просто уповільнює ваш код і не має користі у версії випуску. На щастя, в Xcode 5 (iOS 7) надзвичайно просто видалити всі ваші заяви NSLog "автоматично" у версії версій. То чому б цього не зробити.
Спочатку 3 кроки, які потрібно зробити, потім деякі пояснення
1) у вашому проекті Xcode знайдіть файл "yourProjectName-prefix.pch" (зазвичай ви знайдете це у групі "підтримуючі файли", де знаходиться ваш файл main.m
2) додайте ці 3 рядки в кінці файлу '.pch':
#ifndef DEBUG
#define NSLog(...);
#endif
3) перевірити різницю між вашою версією "налагодження" та "випуском". Один із способів зробити це - "редагувати схему" -> "запустити ім'я програми" -> у вкладці "інформація" вибрати за допомогою випадаючого поля між налагодженням та випуском. У версії випуску ви не побачите жодного виходу NSLog на консолі налагодження!
Як це все працює?
Перш за все, потрібно знати, що препроцесор є відносно «німим», і він просто виконує функцію «заміни тексту» перед тим, як викликати компілятор. Він замінює все, що ви "#define", тим, що слідує за #define
твердженням.
#define NSLog(...);
(...)
Чи означає «нічого» між дужками (). Зверніть увагу і ;
на кінець. Це не обов'язково, оскільки компілятор оптимізує це, але мені подобається розміщувати його там, оскільки це "правильніше". Після нашого #define
немає "нічого", тому препроцесор замінить його на "нічого", і він просто викине повну лінію, починаючи з NSLog...
і включаючи ;
.
визначити заяви можна зробити умовними, використовуючи #ifdef
(якщо визначено) або #ifndef
(якщо не визначено)
тут ми пишемо #ifndef DEBUG
, що означає "якщо символ DEBUG не визначений". #ifdef
Або #ifndef
потреба бути «закритим» з#endif
Xcode 5 визначає за замовчуванням символ "DEBUG" для нас, коли в режимі de build є "DEBUG". У "релізі" це не визначено. ви можете перевірити це в налаштуваннях свого проекту, на вкладці "Налаштування параметрів" -> прокрутіть униз до розділу "Apple LLVM 5.0 - Попередня обробка" -> макроси препроцесора. Ви побачите, що символ "DEBUG" не визначений для версій версій!
нарешті, .pch файл створюється Xcode автоматично та автоматично включається у кожен вихідний файл під час компіляції. Так що, ніби ви все це помістили #define
у кожен свій вихідний файл.