Pergunta

É simples assim.

Leão correndo.

  1. Acabei de atualizar para o XCode 4.4
  2. carreguei meu arquivo de projeto XCode 4.3 mais recente
  3. comentou uma linha de código @synthesize
  4. 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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top