Pergunta

Como faço para configurar NSZombieEnabled e CFZombieLevel para minha executável no Xcode 4?

Foi útil?

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":

Click "Enable Zombie Objects"

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: EXC_BAD_ACCESS

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:

  1. Clique no "Run Run Button DollowD"
  2. Da lista, escolha Profile
  3. O programa "instrumentos" deve abrir onde você também pode escolher Zombies
  4. Agora você pode interagir com seu aplicativo e tentar causar o erro
  5. Assim que o erro acontecer, você deve obter uma dica sobre quando seu objeto foi liberado e, portanto, desalocado.

Zombies

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:

  1. Se você esquecer de desmarcar a opção na guia de diagnóstico, nenhum objetivo será liberado da memória.

  2. 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

xcode 7 zombie flag

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 !!!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top