@synthesize alguma coisa = _alguma coisa;criar automaticamente a variável _alguma coisa também?

StackOverflow https://stackoverflow.com//questions/11712700

  •  13-12-2019
  •  | 
  •  

Pergunta

Entendo que @synthesize cria automaticamente os getters e setters para uma variável de instância.Quando especifico a parte = _something, entendo que isso informa ao compilador/tempo de execução que desejo que ele use uma variável de apoio específica para os getters/setters.

O Objective-C cria automaticamente a variável _something junto com meus getters/setters ou devo definir essa variável de instância em meu arquivo de interface/implementação?

Foi útil?

Solução

A questão é se @property no arquivo de cabeçalho e @synthesize na implementação cria o ivar subjacente ou se o ivar deve ser listado no arquivo de cabeçalho.Exemplo, no arquivo de cabeçalho:

@interface SomeClass : NSObject {
    NSString *_someString;    // Is this needed???
}
@property NSString *someString;

e na implementação:

@synthesize someString = _someString;

A resposta é que depende se você está ou não usando o tempo de execução legado ou moderno.No iOS você está sempre usando o tempo de execução moderno, então nunca precisa do NSString *_somestring linha, mas esta questão é sobre o Mac OS X.Para Mac OS X, se você estiver usando um programa de 64 bits no Mac OS X 10.5 ou posterior, estará usando o tempo de execução moderno; caso contrário, estará usando o tempo de execução legado e precisará da linha extra em seu arquivo de cabeçalho.Como houve alguma desinformação postada, aqui está uma referência: Guia de programação em tempo de execução Objective-C.

Outras dicas

Desculpe, interpretando mal uma parte de sua pergunta.Se você fizer a parte @synthesize com o sublinhado, tudo bem.Não precisa definir explicitamente um ivar.

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