У меня есть класс подключения, который использует NSURLConnection для подключения к серверу. В то время как в основном классе я вызываю метод класса этого класса, метод класса затем выделяет его экземпляр, и когда получен делегат ConnectionDidFinish, я освобождаю тот же класс изнутри. Является ли этот подход правильным или это приведет к некоторой проблеме.
Основной класс:
[ConnectionClass connectToServer];
Класс подключения:
@implementation ConnectionClass
+(void)connectToServer{
connectionClass = [[ConnectionClass alloc] init];
[connectionClass createConnection];
}
-(void)createConnection{
NSURLConnection *connection = [[NSURLConnection alloc] initWithDelegate:self];
// create asynchronous connection
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection{
[self release];
}
@end
Хорошо ли освобождать себя в рамках своего собственного метода?
Что если я сделаю что-то таким образом;
Основной класс:
[connectionClass setDelegate:self];
[connectionClass connectToServer];
Класс подключения:
@implementation ConnectionClass
-(void)connectToServer{
[connectionClass createConnection];
}
-(void)createConnection{
NSURLConnection *connection = [[NSURLConnection alloc] initWithDelegate:self];
// create asynchronous connection
}
-(void)connectionDidFinishLoading:(NSURLConnection *)connection{
[self.delegate finishedConnection:self]; // added delegate and then called to the main class and pass the self object for main to release it
}
@end
И в делегате основного класса мы, освобождаем объект,
-(void)finishedConnection:(ConnectionClass*)connection
{
[connection release];
}
Есть ли проблема с освобождением объекта таким образом?