Atualização para Xcode 5 e iOS 7
nota: para uma solução Xcode 7 / Swift 2.1 para remover as instruções print () em uma versão de lançamento, encontre minha resposta aqui .
Sim, você deve remover qualquer instrução NSLog em seu código de lançamento, pois isso apenas retarda o seu código e não tem qualquer utilidade em uma versão de lançamento. Felizmente, no Xcode 5 (iOS 7), é incrivelmente simples remover todas as suas instruções NSLog 'automaticamente' em compilações de lançamento. Então, por que não fazer?
Primeiro as 3 etapas a serem seguidas, depois alguma explicação
1) em seu projeto Xcode, localize o arquivo 'yourProjectName-prefix.pch' (normalmente você o encontrará no grupo 'arquivos de suporte', onde seu arquivo main.m está localizado
2) adicione essas 3 linhas no final do arquivo '.pch':
#ifndef DEBUG
#define NSLog(...);
#endif
3) teste a diferença entre a sua versão de 'depuração' e 'lançamento'. Uma maneira de fazer isso é através do 'esquema de edição' -> 'executar nome do aplicativo' -> na guia 'informações', selecione usando a caixa suspensa entre depuração e lançamento. Na versão de lançamento, você não verá nenhuma saída NSLog no console de depuração!
Como tudo isso funciona?
em primeiro lugar, deve-se saber que um pré-processador é relativamente 'burro' e apenas atua como um 'substituto de texto' antes de o compilador ser chamado. Ele substitui qualquer coisa que você '#define' pelo que segue a #define
declaração.
#define NSLog(...);
O (...)
significa 'qualquer coisa' entre os colchetes (). Lembre-se também ;
do final. Isso não é estritamente necessário, pois o compilador irá otimizar isso, mas eu gosto de colocá-lo lá, pois é mais 'correto'. Depois de nosso, #define
não há 'nada', então o pré-processador irá substituí-lo por 'nada', e então jogará fora a linha completa, começando em NSLog...
até e incluindo o ;
.
as declarações de definição podem ser tornadas condicionais usando #ifdef
(se definido) ou #ifndef
(se não definido)
aqui escrevemos #ifndef DEBUG
, o que significa 'se o símbolo DEBUG não está definido'. O #ifdef
ou #ifndef
precisa ser 'fechado' com#endif
O Xcode 5 define por padrão o símbolo 'DEBUG' para nós quando o modo de construção é 'DEBUG'. Em 'release' isso não está definido. você pode verificar isso nas configurações do projeto, guia 'Configurações de compilação' -> role para baixo até a seção 'Apple LLVM 5.0 - Pré-processamento' -> macros do pré-processador. Você verá que o símbolo 'DEBUG' não está definido para versões de lançamento!
finalmente, o arquivo .pch é criado pelo Xcode automaticamente e automaticamente incluído em cada arquivo de origem durante o tempo de compilação. Portanto, é como se você tivesse colocado #define
tudo em cada um de seus arquivos de origem.