Инструменты, показывающие ложную утечку? - PullRequest
2 голосов
/ 08 октября 2009

Я не уверен, почему Instruments показывает следующий код как утечка 128 байтов в строке initWithFrame UILabel:

self.navigationItem.leftBarButtonItem = self.editButtonItem; 
UILabel *tmp = [[UILabel alloc] initWithFrame:CGRectMake(25, 100, 275, 100)];
self.emptyMsg = tmp;
[tmp release];

Обратите внимание, что в этих классах освобождается свойство emptyMsg в следующем:

-(void) dealloc {
     [self.emptyMsg release];
     [self.pathToUsersFriendsFile release];
     [super dealloc];
}

В какой-то момент я не использовал метод доступа для установки emptyMsg, поэтому я ожидал, что изменения в этой утечке исчезнут. Увы, это все еще обнаруживается. Кто-нибудь может указать мне на другую причину?

Объявление переменной:

@interface FriendListViewController : UITableViewController <AddFriendDelegate> {
    NSString *pathToUsersFriendsFile;
    UILabel *emptyMsg;
}
@property(retain) UILabel *emptyMsg;
@end

1 Ответ

1 голос
/ 09 октября 2009

Нет ничего плохого в том, как ты это сделал. (Хотя я бы воспользовался советом Рича и , а не использовал бы синтаксис точки в методе dealloc; вместо этого освободите переменные экземпляра.) Инструменты не должны быть смущены этим, но инструменты не совершенны. Если он настаивает, что это утечка памяти, это ложный положительный результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...