Qual é a diferença entre usar Obj-C acessores e usando sintaxe de ponto?
-
12-09-2019 - |
Pergunta
Desde que eu comecei no desenvolvimento do iPhone Eu tenho um bocado confuso a respeito de qual é a melhor maneira para acessar dados como um membro de uma classe.
Digamos que eu tenha uma classe chamada MyClass, e nele eu tenho:
@interface MyClass : NSObject {
int myInt;
}
@property (nonatomic, assign) int myInt;
Na aplicação, é melhor fazer isso:
myObject.myInt = 1;
Ou isso?
[myObject setMyInt:1];
Isso vale para a leitura do valor.
int newInt = myObject.myInt;
vs.
int newInt = [myObject myInt];
Solução
Realmente não importa, eles são a mesma coisa. A sintaxe de ponto é uma conveniência que está lá para você usar, e eu sinto que ele faz o seu código mais limpo.
O único caso em que eu achar que usando a sintaxe de ponto lança aviso ou erros do compilador é se você tem ter um objeto id, mesmo se você sabe que tem essa propriedade.
id someReturnedObject = [somethingObject someMysteryObjectAtIndex:5];
int aValue = 0;
aValue = someReturnedObject.value; // warning
aValue = [someReturnedObject value]; // will just do it
Outras dicas
O tipo do objeto é estaticamente verificado com o. sintaxe, mas não com o [] sintaxe. Isto significa que você não pode usar. se o tipo do objeto não for especificado, e que é benéfico para usá-lo quando ele é, para que o compilador irá ajudá-lo mais.
A sintaxe de ponto em Objective-C é essencialmente uma abreviação para a utilização dos métodos de acesso. A mensagem ainda é enviada através do método de acesso. Esperança de que responde a sua pergunta ??p>