Como posso desativar o ARC para um único arquivo em um projeto?


1342

Estou usando o ARC com sucesso em meu projeto. No entanto, encontrei alguns arquivos (por exemplo, em testes de unidade e objetos simulados) em que as regras do ARC são um pouco mais frágeis no momento. Lembro-me de ouvir que havia uma maneira de desativar o ARC por arquivo, embora eu não tenha conseguido encontrar essa opção.

Isso é possível? Como desabilito o ARC por arquivo?


Respostas:


2168

É possível desativar o ARC para arquivos individuais adicionando o -fno-objc-arcsinalizador do compilador para esses arquivos.

Você adiciona sinalizadores de compilador em Destinos -> Fases de Construção -> Origens de Compilação. Você deve clicar duas vezes na coluna direita da linha em Sinalizadores do compilador . Você também pode adicioná-lo a vários arquivos, mantendo pressionado o botão cmd para selecionar os arquivos e pressionando enter para exibir a caixa de edição do sinalizador. (Observe que a edição de vários arquivos substituirá os sinalizadores que já tenham.)

Criei um projeto de exemplo que tem um exemplo: https://github.com/jaminguy/NoArc

xcode

Consulte esta resposta para obter mais informações: Desabilitar a contagem automática de referências para alguns arquivos


58
Portanto, o local para adicionar essa sinalização não é muito intuitivo. Mas, no Xcode 4, nas fases de construção e compilação de fontes, na verdade existem duas colunas. Um para o nome do arquivo e outro para os sinalizadores de compilação desse arquivo. É aqui que você insere esse sinalizador de compilador específico.
casademora

3
Você pode especificar um diretório, ou seja, todos os arquivos em um diretório? Que tal para um grupo?
ma11hew28

4
Nenhum diretório. Apenas um único arquivo de cada vez nas configurações de compilação :(
casademora

13
@casademora, você não pode obter votos suficientes para esta informação. Obrigado.
theTRON 28/10/11

26
@casademora, você pode selecionar vários arquivos ao mesmo tempo - mas não clique duas vezes, mas pressione RETURN. basta adicionar o -fno-objc-arce ele será adicionado a todos os arquivos selecionados. edit só vi a resposta abaixo desta :(
pkyeck 7/12

460

Desative o ARC em vários arquivos:

  1. Selecione os arquivos desejados em Destino / Fases de compilação / Fontes de compilação no Xcode
  2. PRESSIONE ENTER
  3. Digite -fno-objc-arc
  4. Pressione Enter ou Concluído

;)

insira a descrição da imagem aqui


2
Valeu! Procuro esse recurso há muito tempo. Clicar duas vezes não funciona quando várias linhas selecionadas são selecionadas, mas pressionar enter funciona. Tão estranho.
bobmoff

4
Oh uau. Eu gastaria todo o meu karma para votar novamente. Obrigado por compartilhar!
Jemmons 04/04

isso parece não funcionar mais no Xcode 4.3.3. clique duas vezes ou pressione enter nos arquivos selecionados não abre a caixa de diálogo para colocar o sinalizador -fno-ojbc-arc, alguém tem uma solução alternativa para isso?
tom

Eu tinha 4.3.3 e agora 4.4 DP7 e ainda funciona muito bem. Tente reiniciar o Xcode, reiniciar a máquina e reparar as permissões.
Tibidabo 29/07

44

No Xcode 4.3, a maneira mais fácil pode ser: Editar / Refatorar / Converter em ARC objetivo-C e marque os arquivos que você não deseja converter. Acho desta maneira o mesmo que usar o sinalizador do compilador acima.


36

É uma maneira muito simples de tornar um arquivo individual sem arco.

Siga as etapas abaixo:

Desative o ARC no arquivo individual:

  1. Selecione os arquivos desejados em Destino / Fases de compilação / Fontes de compilação no Xcode

  2. Selecione o arquivo .m que você deseja torná-lo NON-ARC PRESS ENTER Digite -fno-objc-arc

Arquivo não ARC para sinalizador de projeto ARC: -fno-objc-arc

Arquivo ARC para sinalizador de projeto não ARC: -fobjc-arc


35

Nota: se você deseja desativar o ARC para muitos arquivos , é necessário:

  1. abra "Fases de construção" -> "Compilar fontes"
  2. selecione arquivos com "left_mouse" + "cmd" (para arquivos separados) ou + "shift" (para arquivos agrupados - selecione o primeiro e o último)
  3. pressione Enter"
  4. colar -fno-objc-arc
  5. pressione "enter" novamente
  6. lucro!

22

Basta usar a -fno-objc-arcbandeira em Build Phases>Compile Sources


13
  1. Selecionar projeto do Xcode
  2. Ir para metas
  3. Selecione a seção Fases de construção
  4. Dentro da seção de fases de construção, selecione as fontes de compilação.
  5. Selecione o arquivo que você não deseja desativar o ARC e adicione -fno-objc-arc

Desativar ARC para um arquivo específico


13

É possível desativar o ARC (contagem automática de referência) para um arquivo específico no Xcode.

Selecione Destino -> Fases de construção -> Origens de compilação -> Selecionar arquivo (clique duplo) -> Adicione "-fno-objc-arc" à janela pop-up.

Eu encontrei essa situação usando arquivos "Reachibility".

Isso é mostrado na figura abaixo:

insira a descrição da imagem aqui



11

As quatro etapas obrigatórias, conforme explicado neste vídeo

    //1. Select desired files
    //2. Target/Build Phases/Compile Sources
    //3. Type -fno-objc-arc
    //4. Done


6

Se você estiver usando o Unity, não precisará alterar isso no Xcode, poderá aplicar um sinalizador de compilação nos metadados para o (s) arquivo (s) específico (s), dentro do Unity. Basta selecioná-los no painel Projeto e aplicar no painel Inspetor. Isso é essencial se você planeja usar o Cloud Build.insira a descrição da imagem aqui


5

Adicione o sinalizador "-fno-objc-arc".

Siga as etapas simples: App> Destinos> Fases de compilação> Fontes de compilação> adicione sinalizador após a classe "-fno-objc-arc"


5

Acho que todas as outras respostas estão explicando como desativar o MRC (contagem de referência manual) e ativar o ARC (contagem de referência automática). Para usar o MRC (contagem de referência manual), ou seja, desabilitando o ARC (contagem de referência automática) em vários arquivos:

  1. Selecione os arquivos desejados em Destino / Fases de compilação / Fontes de compilação no Xcode
  2. PRESSIONE ENTER
  3. Digite -fobjc-arc
  4. Pressione Enter ou Concluído

2

Basta usar o sinalizador -fno-objc-arc em Build Fhases> Compile Sources na frente dos arquivos aos quais você não deseja que o ARC seja aplicado.


-1
  1. selecione projeto -> destinos -> fases de construção -> fontes do compilador
  2. selecione arquivo -> sinalizadores do compilador
  3. adicione -fno-objc-arc

-2

Vá para App -> depois em Alvos -> Fases de construção -> Origem da compilação

Agora, selecione o arquivo no qual deseja desativar o ARC

cole este trecho "-fno-objc-arc" Após colar, pressione ENTER

em cada arquivo em que você deseja desativar o ARC.


5
sua resposta não fornece nenhuma adição a essa pergunta antiga.
24715 vikingosegundo

-2

Etapa a seguir para ativar a desativação do ARC

Selecionar projeto do Xcode Ir para destinos Selecione a seção Fases de construção Dentro da seção Fases de construção, selecione as fontes de compilação. Selecione o arquivo que você não deseja desativar o ARC e adicione -fno-objc-arc


1
sua resposta não fornece nenhuma adição a essa pergunta antiga.
Jomafer 14/05

Que adição precisa. se você souber melhor do que nos fornecer.
annu 14/05

Eu não te votei. É exatamente essa pergunta que foi feita em 11 de julho de 2011 às 5:21. Há muitas respostas com a mesma resposta que não adicionam qualquer informação útil ... Eu suspeito que alguém downvote você, por essa razão ...
jomafer

você pode me dar um breve resumo?
Anu
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.