Como faço para configurar NSZombieEnabled no Xcode 4?
-
25-09-2019 - |
Pergunta
Como faço para configurar NSZombieEnabled
e CFZombieLevel
para minha executável no Xcode 4?
Solução
No Xcode 4.x prima
⌥⌘R
(ou clique em Menubar
> Product
> Scheme
> Edit Scheme
)
selecione o "Diagnóstico" e clique em "Ativar Zumbi Objetos":
Isso transforma lançado objetos em NSZombie instâncias que o console de impressão avisos quando usado novamente.Esta é uma ajuda de depuração que aumenta o uso de memória (nenhum objeto for realmente lançado), mas melhora o relatório de erros.
Um caso típico é quando você sobre a libertação de um objeto e não sei qual:
- Com zumbis:
-[UITableView release]: message sent to deallocated instance
- Sem zumbis:
Este Xcode definição é ignorada quando você arquivar o aplicativo para a App Store submissão.Você não precisa tocar em nada antes de liberar seu aplicativo.
Pressionando ⌥⌘R é o mesmo que selecionar Produto > Executar, mantendo a Alt tecla pressionada.
Clicando em "Habilitar Zumbi Objetos" na caixa de seleção é o mesmo que adicionar manualmente "NSZombieEnabled = YES" na seção "Variáveis de Ambiente" do separador de Argumentos.
Outras dicas
Jano, a resposta é a maneira mais fácil de encontrá-lo..outra forma seria se você clicar sobre o regime de barra suspensa -> editar esquema -> argumentos guia e, em seguida, adicionar NSZombieEnabled em Variáveis de Ambiente coluna e SIM na coluna valor...
Acho essa alternativa mais conveniente:
- Clique no "Run Run Button DollowD"
- Da lista, escolha
Profile
- O programa "instrumentos" deve abrir onde você também pode escolher
Zombies
- Agora você pode interagir com seu aplicativo e tentar causar o erro
- Assim que o erro acontecer, você deve obter uma dica sobre quando seu objeto foi liberado e, portanto, desalocado.
Assim que um zumbi é detectado, você obtém uma bela "pilha de zumbis" que mostra quando o objeto em questão foi alocado e onde foi retido ou liberado:
Event Type RefCt Responsible Caller
Malloc 1 -[MyViewController loadData:]
Retain 2 -[MyDataManager initWithBaseURL:]
Release 1 -[MyDataManager initWithBaseURL:]
Release 0 -[MyViewController loadData:]
Zombie -1 -[MyService prepareURLReuqest]
Vantagens em comparação com o uso da guia de diagnóstico dos esquemas Xcode:
Se você esquecer de desmarcar a opção na guia de diagnóstico, nenhum objetivo será liberado da memória.
Você obtém uma pilha mais detalhada que mostra em quais métodos seu objeto corrupto foi alocado / liberado ou retido.
No Xcode 4.2
- Nome do projeto/esquema de edição/diagnóstico/
- Habilitar caixa de seleção Objetos de zumbi
- Você Terminou
On no Xcode 7
⌘<
ou selecione Edit Scheme
a partir de Product
> Scheme
Cardápio
Selecione Enable Zombie Objects
forme o Diagnostics
aba
Como alternativa, se você preferir .xcconfig
Arquivos que você pode ler este artigo https://therealbnut.wordpress.com/2012/01/01/setting-xcode-4-0-environment-variables-from-a-script/
O CocoA oferece um recurso legal que aprimora muito seus recursos para depurar essas situações. É uma variável de ambiente que é chamado NSZombieEnabled, assista isso vídeo Isso explica a criação de NSZombieEnabled em Objective-C
No Xcode > 4.3:
Você clique sobre o regime de barra suspensa -> editar esquema -> argumentos guia e, em seguida, adicionar NSZombieEnabled em Variáveis de Ambiente coluna e SIM na coluna valor.
Boa Sorte !!!