XCode 4.4 Auto @Synthesize falhando em um projeto XCode 4.3
-
13-12-2019 - |
Pergunta
É simples assim.
Leão correndo.
- Acabei de atualizar para o XCode 4.4
- carreguei meu arquivo de projeto XCode 4.3 mais recente
- comentou uma linha de código @synthesize
- e os erros são abundantes.:(
O compilador verificado está definido como 'LLVM 4.0'.
Então fiz o mesmo teste, mas criei um novo projeto dentro do XCode 4.4 e pronto!Auto @synthesize funciona em um projeto 4.4.
@sintetizar automaticamente também parece funcionar novo propriedades adicionadas ao código.Mas o antigo existente gera um erro.
Alguém mais experimentou isso?Alguma outra coisa que devo verificar?
Eu realmente quero que os recursos de geração automática funcionem.
Obrigado.
Solução
O erro não está na maneira como você declara a propriedade, mas na maneira como você a utiliza.
Propriedades sintetizadas automaticamente criam um armazenamento de apoio com um sublinhado inicial por padrão.
Então, no seu código, quando você tem uma propriedade declarada como:
@property (nonatomic, strong) UILabel *sectorLabel;
e você sintetiza automaticamente - algo assim está sendo gerado automaticamente para você pelo compilador:
@synthesize sectorLabel = _sectorLabel;
Agora você pode acessá-lo através da propriedade:
self.sectorLabel;
Ou você pode acessar a loja de apoio diretamente com:
_sectorLabel;
Outras dicas
Resolvi-o!
Então foi isso que eu fiz.
ViewController.h
@interface ViewController : UIViewController
// Public:
@property (nonatomic, strong) UILabel *sectorLabel;
@end
ViewController.m
@implementation ViewController
//@synthesize sectorLabel;
E então esse erro apareceu.
ViewController.m:48:2:Utilização do identificador não declarado 'sectorLabel';fez quer dizer '_sectorLabel'?
Resolveu no momento em que mudei o código para:
self.sectorLabel
O XCode 4.3 compilou e funcionou bem sem a necessidade de ter a palavra-chave 'self'.Mas o XCode 4.4 parece ter ficado mais rígido quanto a isso.
O problema com a resposta aceita é que você acabou de alterar o comportamento do seu código adicionando o self.property.
Acessando o IVAR versus a propriedade são duas coisas diferentes.A resposta correta seria alterar o código para usar o ivar corretamente adicionando o sublinhado.
Não é sobre o rigor é sobre uma alteração para a sintetização de propriedade padrão para Xcode.Além disso, na maioria dos guias de estilo, você lerá que a Apple desencoraja os nomes _ivares, então eu acho que isso é a janela.
no meu código eu só uso eu.Quando pretendo acessar através da propriedade getter e setter.Não alterando meu código existente para esse comportamento é uma perda de tempo.