Вопрос по поводу утечки памяти в Objective-C - PullRequest
0 голосов
/ 28 января 2011

Если я назначу что-то вроде

self.connection = [NSURLConnection connectionWithRequest: запрос делегата: self];

Теперь, если выполните следующее:

self.connection =nil;

это будет утечка памяти?Если нет, то почему?

1 Ответ

3 голосов
/ 28 января 2011

Это не будет утечка памяти.Это из-за того, как реализуются объективные свойства c.Я предполагаю, что вы используете retain в декларации собственности.Теперь, когда вы делаете self.connection, будет вызван следующий метод.Так как ваше соединение сначала сбрасывается, а затем выполняется операция сохранения в ноль, которая просто вернет ноль.Таким образом, утечка памяти не произойдет.

-(void)setConnection:(NSURLConnection *)newConnection {
    if (connection != newConnection) {
        [connection release];
        connection = [newConnection retain];
    }
}

Подробности можно найти здесь http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Articles/ocProperties.html

...