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.