Утечка объекта после добавления подпредставления - PullRequest
0 голосов
/ 19 ноября 2010

Товарищи разработчики,

Я пытаюсь установить веб-изображение в качестве фона для кнопки UIB. Все работает, за исключением того, что когда я строю и анализирую, это показывает, что aImage все еще имеет +1 ссылку. Добавление релиза для aImage после addSubview не решает проблему. Я думаю, что я мог бы решить эту проблему, создав подклассы и написав пользовательский пакет, но это похоже на запутанное решение. У кого-нибудь есть предложения? Спасибо !

UIImage *aImage = [[UIImage alloc] initWithData:[NSData dataWithContentsOfURL:mUrl]];
[myOverviewButton setBackgroundImage:aImage forState:UIControlStateNormal];
[aView addSubview:myOverviewButton];

Ответы [ 2 ]

1 голос
/ 19 ноября 2010

либо добавьте авторелиз к aImage, либо вызовите его сброс вручную.

UIImage *aImage = [[[UIImage alloc] initWithData:[NSData dataWithContentsOfURL:mUrl]] autorelease];

При вызове setBackgroundImage: кнопка выполняет сохранение изображения.Когда вы выполняли alloc / init, вы сохраняли то, что никогда не было освобождено.

0 голосов
/ 19 ноября 2010

Как только код, который вы показали, завершится, у aImage будет счетчик ссылок 2: один из вызова alloc и один из вызова setBackgroundImage:forState:.Вы должны отпустить после setBackgroundImage:forState:, чтобы сбалансировать alloc, но у вас все равно будет счетчик ссылок 1. Это ожидаемо - иначе myOverviewButton не будет изображения для работы.Он должен опуститься до 0, когда myOverviewButton освобождает.

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