Objetivo-C:Tornando iVars @public ou @synthesizing @properties para eles?Quando devo usar propriedades?

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

  •  13-11-2019
  •  | 
  •  

Pergunta

Tenho algumas variáveis ​​de instância em minha classe que gostaria que estivessem acessíveis em qualquer lugar.Igual a:

@interface SomeObject : NSObject
{
    @public
        NSString *someString;
}
@end

@implementation SomeObject
@end

Posso acessar a propriedade da instância usando o -> sintaxe como abaixo, como eu faria em C++:

someObjectInstance->someString

Devo fazer um imóvel para someString quando tudo que eu quero é que seja acessível ao mundo exterior?eu criaria um @property para someString na minha interface e @synthesize na minha implementação, o que me permitiria acessá-lo usando a sintaxe de ponto.

Foi útil?

Solução

De modo geral, se quiser expor dados, você deve usar propriedades.Tornar públicas as variáveis ​​de instância é uma má ideia em geral.

Outras dicas

É a maneira mais orientada a objetos de fazer isso porque, ao usar uma propriedade, você pode alterar o getter/setter posteriormente (em vez de sintetizá-lo) se quiser que ele faça outra coisa.

Sim, porque o que você está fazendo quando faz disso um @property está orientando as pessoas que o usam para ligar para o setSomeString e someString métodos, com efeito.Mesmo se você estiver @synthesizeAo usá-los, é melhor para a qualidade do seu código usar os métodos, porque você poderia altere-os se precisar.Se você estiver usando apenas a referência de ponteiro, se precisar interceptar acessos, não conseguirá.

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