Предположим, есть класс со следующим интерфейсом:
#import <Foundation/Foundation.h>
@interface MyClass : NSObject {
}
@property (nonatomic, retain) NSDate* myDate;
-(void)foo;
@end
и следующей реализацией:
#import "MyClass.h"
@implementation MyClass
@synthesize myDate = _myDate;
- (void)dealloc
{
[_myDate release];
[super dealloc];
}
-(void)foo
{
NSDate* temp = [[NSDate alloc] init];
self.myDate = temp;
[temp release];
}
@end
1) В функции foo
будет ли освобождение, подобное этому, гарантировать, что счетчик retain объектов поддерживается должным образом (т.е. не происходит утечки памяти и ненужных освобождений).
NSDate* temp = [[NSDate alloc] init];
self.myDate = temp;
[temp release];
2) Тот же вопрос, что и в 1), за исключением применения к следующей технике:
self.myDate = [[NSDate alloc] init];
[self.myDate release]
3) Тот же вопрос, что и в 1), за исключением применения к следующей технике:
self.myDate = [[NSDate alloc] init] autorelease];
4) Тот же вопрос, что и в 1), но применяется к следующей технике:
self.myDate = [[NSDate alloc] init];
[_myDate release]
5) Тот же вопрос, что и в 1), но применяется к следующей технике:
[_myDate release];
_myDate = [[NSDate alloc] init];