UIImage initWithData ведет себя по-разному на iOS 4.3 - PullRequest
1 голос
/ 10 марта 2011

У меня есть приложение, которое нормально работает в App Store в течение 6 месяцев или около того, но ни одно из его изображений (загруженных с веб-сайта через "NSURLConnection initWithRequest") не отображается в iOS 4.3. Оказывается, у меня есть строка кода, которая выглядит следующим образом:

UIImage *img = [[UIImage alloc] initWithData:data];

и вскоре после этого, чтобы подготовиться к следующему изображению, я делаю это:

data.length = 0;

Когда я комментирую установку длины на ноль (откладывая ее до начала загрузки следующего изображения), она работает на iOS 4.3.

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

Мне кажется, что в iOS 4.3 реализация initWithData не полностью завершена с данными, когда метод возвращается. Возможно, некоторая работа откладывается до тех пор, пока UIImage не будет назначен UIImageView, что происходит чуть позже? Может быть, даже отложено до визуализации UIImage?

Может кто-нибудь пролить свет на это, казалось бы, новое поведение в iOS 4.3?

1 Ответ

1 голос
/ 10 марта 2011

Я думаю, что ваш анализ звучит правильно. Легко представить, какое небольшое изменение может вызвать это, например, UIImage, возможно, был изменен, чтобы сохранить данные, а не скопировать их, или что-то в этом роде. Я бы отправил сообщение об ошибке в Apple, чтобы убедиться, что кто-то заметил проблему, а затем обошел ее, изменив код на:

UIImage *img = [[UIImage alloc] initWithData:[[data copy] autorelease]];

По крайней мере, я предполагаю, что это обойдется. Было бы очень интересно, если бы не ... пожалуйста, дайте нам знать, так или иначе.

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