Может кто-нибудь помочь с проблемой утечки памяти? - PullRequest
0 голосов
/ 12 июля 2011

Я новичок, пытающийся выяснить проблему утечки памяти. Кто-нибудь видит что-то не так со следующим кодом?

- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[self.navigationController.navigationBar setTintColor:[UIColor colorWithRed:0.10 green:.20 blue:0.30 alpha:1]];
}

В случае, если это поможет, Instruments покажет блок с утечкой со следующей информацией ...

Тип события: Malloc

Ответственная библиотека: CoreGraphics

Ответственный абонент: CGTypeCreateInstanceWithAllocator

Любая помощь будет принята с благодарностью. (Я все еще очень новичок, поэтому, пожалуйста, объясните как можно более подробно.)

Большое спасибо!

Ответы [ 2 ]

1 голос
/ 12 июля 2011

Немного, но я не уверен, была ли это просто ошибка в моем проекте или нет, но однажды у меня была похожая проблема при установке tintColor в viewWillAppear.Я закончил тем, что добавил проверку nil перед тем, как снова назначить цвет, и это прояснило его для меня (я не проводил никаких дальнейших исследований, поэтому могу ошибаться).

if (nil == self.navigationController.navigationBar.tintColor) {
  self.navigationController.navigationBar = [UIColor colorWithRed:0.10 green:.20 blue:0.30 alpha:1];
}
1 голос
/ 12 июля 2011

Код, который вы опубликовали, верен в отношении управления памятью.

Инструменты Утечки просто покажут точку, в которой находится утечка объекта, а не точку, в которой он фактически просочился.

Итак, ваша утечка в другом месте. Глядя на ваш код, я бы сказал, что утечка, возможно, происходит, когда вы выпускаете класс, содержащий этот код, или в другом месте по динамическому пути к dealloc.

Попробуйте прокомментировать setTintColor, чтобы проверить, есть ли утечка.

Надеюсь, это объяснение поможет вам встать на правильный путь, но в любом случае, если вам нужна дополнительная помощь, вы должны опубликовать больше кода ...

...