Я до сих пор иногда удивляюсь, когда дело доходит до деталей Objective-C.
Имея этот заголовочный файл:
.h:
AVCaptureSession *capSession;
@property(nonatomic, retain) AVCaptureSession *capSession;
Почему в ObjC правильно делать это:
.m:
// Create instance locally, then assign to property and release local instance.
AVCaptureSession *session = [[AVCaptureSession alloc] init];
self.capSession = session;
[session release];
и почему это неправильно / не работает / приводит к неправильному поведению, чтобы сделать это:
.m:
// Directly assign to property.
self.capSession = [[AVCaptureSession alloc] init];
Основная проблема, которую я вижу, в том, что мне не хватает «релиза» во 2-й версии. Можно ли использовать «autorelease» в качестве альтернативы:
self.capSession = [[[AVCaptureSession alloc] init] autorelease];
Рене