В мире iPhone Objective-C я видел этот паттерн повсюду и все время использую его сам, не понимая, что происходит:
In Test.h
@interface Test: UIViewController
{
NSMutableArray *testArray;
}
@property (retain, nonatomic) NSMutableArray *testArray;
А в Тест.м
@implementation Test
@synthesize testArray
- (void) viewDidLoad
{
// why do we do this?
NSMutableArray *init = [[NSMutableArray alloc] init];
self.testArray = init;
[init release];
[self.testArray addObject: @"A"]; // why can't I do this directly?
...
}
- (void) dealloc
{
[testArray release];
[super dealloc];
}
Мой вопрос таков: если у testArray есть сохранение, когда оно объявлено в свойстве, зачем нам нужно создавать новый объект инициализации NSMutableArray, назначать его testArray и выпускать? Почему я не могу просто начать использовать testArray в viewDidLoad, ничего не делая?
Я знаю, что есть некоторые споры о том, как лучше всего это сделать (создать новый объект или использовать объект автоматического выпуска), но в обоих случаях мы получаем testArray с счетом сохранения 1. Как я полагаю, сохранить свойство уже дает. Так зачем создавать этот объект init?