У Маурисио правильный ответ: обязательно назначьте собственность, чтобы получить преимущества @property.Чтобы прояснить ситуацию, попробуйте использовать код, подобный следующему:
@interface StateStack : NSObject {
NSArray *_stack;
}
@property (nonatomic,retain) NSMutableArray *stack;
@end
@implementation StateStack
@synthesize stack=_stack;
@end
Теперь, если вы попытаетесь:
NSMutableArray* s = [[NSMutableArray alloc] init];
stack = s;
[s release];
Вы получите ошибку, которая будет означать, что вы пытались установитьивар, а не собственность, как предполагалось.Это несоответствие между именем ivar и именем свойства противоречит рекомендациям Apple, но это хороший способ помочь вам выработать привычку использовать присваивание свойств, когда вы собираетесь это сделать.