Definindo uma propriedade de classe Objective-C sem usar uma auto referência
Hoje de manhã eu me deparei com um acidente em um aplicativo do iPhone em que estou trabalhando e enquanto consertei o bug, estou curioso sobre a razão sintática, isso foi um problema.
Aqui está meu código reduzido para elementos simples. Estou preenchendo itens em um TableView usando um NSArray para os itens. O NSArray é uma propriedade:
@interface FooViewController : UITableViewController {
NSArray *stuff;
}
@property (nonatomic, retain) NSArray *stuff;
E no meu arquivo de implementação:
@synthesize stuff;
- (void)viewDidLoad {
NSArray *arr = [[NSArray alloc] initWithObjects:@"", @"Item 1", @"Item 2",
@"Lorem", @"Ipsum", nil];
self.stuff = arr;
[arr release];
}
Agora, quando eu escrevi o método pela primeira vez, eu acidentalmente deixei de lado o "eu". e isso causou a bomba. Embora durante o teste, funcionou à primeira vista. Eu tentei:
stuff = arr;
NSLog(@"%d", [stuff count]);
Mas usandocoisa em outros métodos bombardeados. Agora que resolvi o problema, posso usar [contagem de coisas] em outros lugares.
Então, por que eu posso usarcoisa em alguns lugares, mas em outros eu devo usarself.stuff?