O que @private
significa no Objective-C?
ios
objective-c
cocoa
private
Jeff Wolski
fonte
fonte
Respostas:
É um modificador de visibilidade - significa que as variáveis de instância declaradas como
@private
podem ser acessadas apenas por instâncias da mesma classe . Membros privados não podem ser acessados por subclasses ou outras classes.Por exemplo:
Além disso, para esclarecer, os métodos são sempre públicos no Objective-C. Porém, existem maneiras de "ocultar" as declarações de método - consulte esta pergunta para obter mais informações.
fonte
Como o htw disse, é um modificador de visibilidade.
@private
significa que o ivar (variável de instância) só pode ser acessado diretamente de dentro de uma instância da mesma classe. No entanto, isso pode não significar muito para você, então deixe-me dar um exemplo. Usaremos osinit
métodos das classes como exemplos, por uma questão de simplicidade. Vou comentar em linha para apontar itens de interesse.Portanto, para responder sua pergunta, o @private protege o ivars do acesso por uma instância de qualquer outra classe. Observe que duas instâncias do MyFirstClass podem acessar todos os ivars um do outro diretamente; presume-se que, como o programador tenha controle completo sobre essa classe diretamente, ele usará essa habilidade com sabedoria.
fonte
@private
o modelo de um objeto, não é mais tão incomum.@implementation
bloco. E depois que você faz isso, eles são efetivamente privados, independentemente dos modificadores de visibilidade, pois nem são visíveis a ninguém fora desse arquivo.É importante entender o que significa quando alguém diz que você não pode acessar uma
@private
variável de instância. A história real é que o compilador apresentará um erro se você tentar acessar essas variáveis no seu código-fonte. Nas versões anteriores do GCC e do XCode, você apenas receberia um aviso em vez de um erro.De qualquer forma, em tempo de execução, todas as apostas estão desativadas. Estes
@private
e@protected
ivars podem ser acessados por um objeto de qualquer classe. Esses modificadores de visibilidade apenas dificultam a compilação do código-fonte no código de máquina que viola a intenção dos modificadores de visibilidade.Não confie nos modificadores de visibilidade ivar para segurança! Eles não fornecem nenhum. Eles são estritamente para a imposição em tempo de compilação dos desejos do construtor de classe.
fonte