Прежде всего, ваш блок и все переменные, которые вы используете в нем, будут скопированы в GCD, поэтому код будет выполняться не в вашем потоке, а в глобальной очереди.
Если вы хотите вернуть свои данные в основной поток, вы можете вложить асинхронный вызов после извлечения данных:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"www.stackoverflow.com"]];
NSURLResponse *response;
NSError *error;
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
if (error) {
// handle error
return;
}
dispatch_async(dispatch_get_main_queue(), ^{
// do something with the data
});
});
Но почему бы не использовать встроенную асинхронную поддержку NSURLConnection? Вам нужен NSOperationQueue, но если вы делаете много сетевых извлечений, то это все равно путь:
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"www.stackoverflow.com"]];
[NSURLConnection sendAsynchronousRequest:request
queue:self.queue // created at class init
completionHandler:^(NSURLResponse *response, NSData *data, NSError *error){
// do something with data or handle error
}];
Лично я использую библиотеку, такую как AFNetworking или ASIHTTPRequest, чтобы сделать работу в сети еще проще, и обе поддерживают блоки (первый использует GCD и немного более современен).
Я не уверен, что могло быть причиной вашей проблемы. Я выполнил пошаговые инструкции на странице, на которую вы указали ссылку для настройки «Hello, GridView», использовал ваш код и смог увидеть текст.
Единственное, что я изменил, - это не создание класса для ImageAdapter Я использовал ваш MyAdapter. В действии HelloGridView.java onCreate я использовал «MyAdapter», а не «ImageAdapter». Я вообще не менял макет.
Вот скриншот того, что я получаю при запуске вашего кода.
Я вижу GridView, поэтому я почти предполагаю, что это похоже на SWT?
Если да, вам нужно показать взаимосвязь между вашим представлением и родительским элементом ViewGroup