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];
Foi útil?

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

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