Objective-C UImage imageWithData Проблема - PullRequest
0 голосов
/ 11 июня 2011

У меня проблема с отображением изображения в виде изображения, которое генерируется из данных.

Моя программа работает следующим образом:

  1. Пользователь выбирает строку из UITableView.
  2. При выборе создается новое представление (описание события), в которое передаются 3 строки NSS и объект NSData.
  3. Эти данные отображаются в представлении, однако также создается поток, чтобы преобразовать NSData в изображение и отобразить его, так как без этого отображается небольшая задержка при отображении представления описания.

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

Вот мой код:

    - (void)viewDidLoad {
    [super viewDidLoad];

    //Display the selected events data
    name.text = eventName;
    date.text = eventDate;
    description.text = eventDescription;

    //Set the title of the navigation bar
    self.navigationItem.title = eventName;

    /* Operation Queue init (autorelease) */
    NSOperationQueue *queue = [NSOperationQueue new];

    /* Create our NSInvocationOperation to call loadDataWithOperation, passing in nil */
    NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self
                                                                            selector:@selector(loadDataWithOperation)
                                                                              object:nil];

    /* Add the operation to the queue */
    [queue addOperation:operation];
    [operation release];
}

//Threaded operation
- (void) loadDataWithOperation {
    //Set the event image
    UIImage *img = [UIImage imageWithData: eventImageURLData];

    image.image = img;
    }

Кто-нибудь знает, что вызвало это?

Спасибо

Jack

1 Ответ

2 голосов
/ 11 июня 2011

Симулятор не имеет ограничений памяти, поэтому он редко отмечает проблему нехватки памяти. Таким образом, вы протекаете NSOperationQueue с. Я вижу, что вы отметили его как авто-релиз, но не видите авто-релиза. Вы, вероятно, должны это исправить. В дополнение к этому, вы должны отправлять код обновления изображения в основной поток.

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