Fiz o download do iOS 5 SDK e descobri que o ARC é um ótimo recurso do novo compilador da Apple. Por enquanto, muitas estruturas de terceiros não suportam o ARC. Posso usar o ARC para o meu novo código e manter o atual código de retenção / liberação inalterado? O conversor ARC não funciona aqui, porque algumas estruturas, como JSONKit, não podem ser convertidas em ARC usando o conversor.
Editar:
A resposta é adicionar -fno-objc-arc
aos sinalizadores do compilador os arquivos que você não deseja que o ARC. No Xcode 4, você pode fazer isso sob o seu objetivo -> Construir fases -> Compilar fontes.
objective-c
ios5
automatic-ref-counting
não elástico
fonte
fonte
.m
arquivo. Não é o.h
arquivo.Respostas:
Os documentos públicos do ARC , embora não estejam diretamente claros neste ponto, parecem sugerir que, desde que cada classe seja toda o ARC ou todos gerenciados manualmente, as classes podem ser integradas em um único programa.
Você não pode misturar apenas ARC e não-ARC em uma única classe; o documento diz que o envio
retain
,release
,autorelease
, ouretainCount
mensagens por qualquer meio (incluindo temporizadores e executa atrasadas, que uso@selector
) é proibido no código de ARC. Portanto, você não pode fazer não-ARC em uma classe ARC (porque as mensagens necessárias são proibidas) e você não pode fazer ARC em uma classe não-ARC (porque o ARC adiciona elementos de sintaxe inválidos sem o ARC).O mesmo documento é um pouco mais claro se você pode integrar bibliotecas / estruturas que não sejam do ARC em um programa do ARC: Sim. Ele não menciona se você pode usar as bibliotecas / estruturas do ARC em um programa em que todo o seu código é não-ARC, mas, considerando todas as opções acima, a implicação parece ser sim.
fonte
#import
usando arquivos de módulo. A configuração dos sinalizadores do compilador é para cada arquivo de módulo (mais precisamente, cada arquivo na fase de compilação "Fontes de compilação"). O compilador não tem como saber se deve usar o ARC ou não para qualquer outro arquivo, exceto herdando a opção que foi dada para o arquivo de módulo iniciado.Não é muito intuitivo como desabilitar o ARC em vários arquivos, por um tempo eu o fiz um por um até descobrir como fazer isso.
fonte
Se você deseja desativar a Contagem automática de referência para alguns arquivos, é muito simples seguir as etapas. Você adiciona sinalizadores de compilador em Destinos -> Fases de construção -> Fontes de compilação.
A bandeira usada é -fno-objc-arc, pressione enter depois de escrevê-la.! Você deve clicar duas vezes na coluna direita da linha em Sinalizadores do compilador. Espero que ajude Obrigado :)
fonte
-fobjc-arc
.É possível desativar o ARC para arquivos individuais adicionando o sinalizador do compilador -fno-objc-arc para esses arquivos.
Como posso desativar o ARC para um único arquivo em um projeto?
fonte