Comecei a desenvolver meu primeiro aplicativo iOS com o Xcode 4.2 e estava visando o iOS 5.0 com um modelo de "aplicativo utilitário" (o que vem com um FlipsideViewController).
Eu li que, como ARC é um recurso de tempo de compilação, ele também deve ser compatível com o iOS 4, então tentei direcionar meu aplicativo para 4.3 e tentar compilá-lo. Ao fazer isso, recebo este erro:
FlipsideViewController.m: erro: Contagem automática de referência Problema: O destino de implantação atual não oferece suporte a referências __weak automatizadas
Está referenciando esta linha:
@synthesize delegate = _delegate;
Essa variável é declarada como:
@property (weak, nonatomic) IBOutlet id <FlipsideViewControllerDelegate> delegate;
Eu entendo que "referências fracas" não são suportadas no iOS 4, mas eu realmente não entendo porque eu gostaria de usar uma referência fraca para começar, nem consigo descobrir como eu iria reescrever as coisas para evitar usá-la, enquanto ainda aproveitando o ARC (afinal, ele deve funcionar com iOS 4 e 5, certo?)
fonte
unsafe_unretained
é compatível com iOS 4.xe 5.0, portanto, oferece compatibilidade com versões anteriores. Se você estiver fazendo uma compilação apenas 5.0, poderá alternar paraweak
para aproveitar a segurança adicional que ele oferece.@autoreleasepool
(em ARC, NSAutoreleasePool para implementações contadas de referência manual mais antigas).Se estiver usando apenas referências fracas para segurança adicional, chame manualmente as novas funções de tempo de execução se estiverem disponíveis e retorne para atribuição simples em
__unsafe_unretained
variáveis, caso não estejam .ZWRCompatibility.h irá simplificar isso um pouco.
fonte
Graças à biblioteca de compatibilidade PLWeakCompatibilty de Mike Ash , agora você também pode usar __weak no iOS 4.x.
É incrivelmente fácil de configurar e não requer nenhuma consideração ou esforço adicional em relação ao 5.x.
fonte