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?

casademora
fonte

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

jaminguy
fonte
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

Tibidabo
fonte
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.

Jingjie Zhan
fonte
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

Dipak Narigara
fonte
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!
digipeople
fonte
22

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

Rahul Gupta
fonte
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

user2538944
fonte
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

Jayprakash Dubey
fonte
11

use -fno-objc-arc para cada arquivo nas fases de construção

Amit Agrawal
fonte
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
user2554822
fonte
8

Por favor, siga a captura de tela e digite -fno-objc-arc .

insira a descrição da imagem aqui

Tunvir Rahman Tusher
fonte
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

gronelândia
fonte
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"

Manoj Chandel
fonte
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
Vin
fonte
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.

C_compnay
fonte
-1
  1. selecione projeto -> destinos -> fases de construção -> fontes do compilador
  2. selecione arquivo -> sinalizadores do compilador
  3. adicione -fno-objc-arc
Mnsd
fonte
-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.

adijazz91
fonte
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

annu
fonte
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