Pergunta sobre objective-c, ios, automatic-ref-counting, xcode4, iphone – Lote adicionando o sinalizador “-fno-objc-arc” para (múltiplos) arquivos de origem

11

Depois de converter um projeto Xcode em ARC (Automatic Reference Counting), eu preciso desabilitar o ARC para alguns dos meus arquivos fonte (principalmente código de terceiros).

Eu sei que preciso definir o sinalizador "-fno-objc-arc" para cada um desses arquivos, mas o Xcode não me dá uma opção para edição em lote - eu preciso adicionar este sinalizador a cada arquivo manualmente, o que pode ser entediante se você precisar configurá-lo para vários arquivos.

Alguém tem uma abordagem inteligente para isso?

Sua resposta

3   a resposta
23

Selecione os que você deseja adicionar o sinalizador (usandoMudança e / ouComando) e pressioneEntrar para exibir o editor de flag. pressioneFeito para aplicar a (s) bandeira (s) inserida (s) ao (s) arquivo (s) selecionado (s).

Tutorial

Eu compus umpostagem no blog para servir como um tutorial para este processo.

Sim, não é muito intuitivo. Evan Mulawski
Rápido e incrível! Eu tentei multi-select e clique duas vezes, nunca pensei em pressionar Enter! Chris Chen
Alguma idéia de como fazer isso para fontes derivadas? Eddie Sullivan
Provavelmente não é muito intuitivo porque você não deve fazer isso manualmente - é para isso que serve a ferramenta de conversão ARC. Veja minha resposta abaixo. Nick Lockwood
Agradável!! Eu nunca soube que você poderia fazer isso +1 borrrden
2

De longe, a opção mais simples é simplesmente usar a ferramenta de conversão ARC em Editar> Refatorar.

Não está muito claro, mas basicamente você apenas verifica todos os arquivos que você quer usar o ARC e desmarca qualquer um que você não queira. Isso fará o seguinte:

1) Arquivos desmarcados terão o sinalizador -fno-objc-arc aplicado

2) Arquivos que são verificados serão convertidos em ARC

3) Os arquivos verificados que já foram convertidos em ARC serão intocados

Leia isso de novo com cuidado. O que às vezes confunde as pessoas é que elas assumem que os arquivos que já foram convertidos devem ser deixados desmarcados ao executar a ferramenta novamente, mas isso aplicará incorretamente o -fno-objc-arc a esses arquivos (resultando em vazamentos).

Você deve pensar na ferramenta ARC Conversion como uma ferramenta "selecionar arquivos compatíveis com ARC em lote e converter arquivos que ainda não são ARC" em vez de uma ferramenta de conversão direta.

Você pode executar a ferramenta de conversão quantas vezes quiser - os efeitos não são cumulativos (embora a conversão de arquivos para ARC não seja reversível).

1

Eu preciso definir arquivos que não devem suportar ARC (principalmente código de terceiros).

Além de gerenciar os sinalizadores, você poderia simplesmente criar uma biblioteca estática para essas origens e, em seguida, vincular.

@CodaFi existem muitas outras variáveis. por exemplo, eu uso configurações de aviso e otimização muito mais altas do que bibliotecas típicas de terceiros. isso pode produzir muito ruído entre minha saída de compilação ou até mesmo os resultados incorretos. também, eu não quero que o projeto principal (meu código) tenha todos os tipos de ruído, como pré-processadores ímpares, dependências de cabeçalho ou caminhos de descoberta incomuns que muitos programas de terceiros acabam usando. justin
Acho que fazer biblioteca é um processo confuso e muitas vezes fútil. Com todo o tempo gasto verificando os cabeçalhos e ajustando as configurações de compilação, você poderia simplesmente definir os sinalizadores do compilador e terminar com isso. CodaFi
@CodaFi depois de ter escrito e configurado muitas bibliotecas, minha opinião é totalmente oposta :) justin
Acho que tudo depende de quantos apps você precisa manter. nycynik

Perguntas relacionadas