Этот код довольно прост, правильно? Я не знаю, следует ли мне сохранять делегата, переданного через метод init.
@interface SomeClass : NSObject {
SomeClassDelegate *someClassDelegate;
}
-(id)initWithDelegate:(SomeClassDelegate *)delegate;
@end
@implementation SomeClass
-(id)initWithDelegate:(SomeClassDelegate *)delegate
{
[delegate retain]; // should I be doing this?
someClassDelegate = delegate;
}
-(void)dealloc
{
[delegate release]; // obviously only do this if I DO need to retain it
[super dealloc];
}
@end
Моя первоначальная мысль - нет, однако этот фрагмент кода, похоже, намекает иначе. Я знаю, что не могу рассчитывать на счет, но хотелось бы знать, как правильно обращаться с делегатами.
// self's retain count is 1
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:req delegate:self];
// the retain count is now 2, did the init of URLConnection retain self?