Получение аватаров Twitter на отдельной ветке iOS - PullRequest
0 голосов
/ 01 сентября 2011

У меня есть следующий код для заполнения UITableView твитами.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

NSString *uniqueIdentifier = @"UITableViewCell";

UITableViewCell *cell = nil;

if(!isNewSearch) {
 cell = [self.tweetsTable dequeueReusableCellWithIdentifier:uniqueIdentifier];

}

Tweet *tweet = [self.tweets objectAtIndex:[indexPath row]];

if(!cell)
{
    isNewSearch = NO;

    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:uniqueIdentifier] autorelease];

    [[cell textLabel] setTextColor:[UIColor whiteColor]];
    [[cell textLabel] setNumberOfLines:0];
    [[cell textLabel] setLineBreakMode:UILineBreakModeWordWrap];
    [[cell textLabel] setFont:[UIFont fontWithName:@"Futura-Medium" size:10]];

    // set custom properties 

}

[[cell textLabel] setText:[tweet text]];
 [[cell imageView] initWithImage:[UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:tweet.profileImageUrl]]]];


return cell;

}

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

Ответы [ 2 ]

1 голос
/ 01 сентября 2011

Вам нужно разобраться в том, чтобы сделать этот вызов асинхронным с NSURLConnection и его методами делегата, потому что в настоящее время этот вызов UIImage выполняется в основном потоке, поэтому ваш пользовательский интерфейс не будет отвечать до тех пор, пока изображение не будет загружено

ЕслиВы не хотите погружаться в NSURLConnection. Существует фантастическая библиотека, которая делает нечто похожее на то, что вы пытаетесь сделать с изображениями и ячейками.Он также предоставляет пример кода, который вы можете использовать и подключить прямо: HJCache: библиотека кеша iPhone для асинхронной загрузки и кэширования изображений .

0 голосов
/ 01 сентября 2011

Не используйте dataWithContentsOfURL: с удаленными URL.

Один из способов сделать это - использовать NSURLConnection (но не sendSynchronousRequest:returningResponse:error:) для асинхронной загрузки файла, а затемзаполните изображение, когда загрузка будет завершена.Существует также ряд сторонних библиотек, таких как ASIHTTPRequest, которые могут быть проще в использовании.

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