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?

questionAnswers(4)

yourAnswerToTheQuestion