Я пытался работать на xcode и ios5, и у меня есть TWRequest для отмены твитов с помощью Twitter Api. Однако я не совсем понимаю, как работают блоки в iOS5. Например, в этом коде
[request performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {
NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:responseData options:0 error:&error];
NSArray* firstParse = [dictionary objectForKey:@"results"];
for (NSDictionary *post in firstParse) {
Tweet *tweetMessage = [[Tweet alloc] init];
tweetMessage.message = [post objectForKey:@"text"];
tweetMessage.user = [post objectForKey:@"from_user"];
[tweets addObject:tweetMessage];
}
}];
NSLog(@"%@",[tweets count]);
Предполагая, что у меня есть твиты = [NSMutableArray arrayWithCapacity: 25]; позвоните куда-нибудь наверх.
Однако, каждый раз, когда я делаю это, счет всегда равен нулю. Проведя некоторое тестирование, я понял, что после запуска NSLog код блока запускался, показывая, что код не запускался сверху вниз, как я использовал.
Кто-нибудь знает, как исправить такую проблему?
Я также попробовал этот более поздний пример, потому что я пытался переместить твиты в viewController, который имеет объект массива
tweetViewController.tweets = [NSMutableArray arrayWithCapacity:25];
[request performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {
NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:responseData options:0 error:&error];
NSArray* firstParse = [dictionary objectForKey:@"results"];
for (NSDictionary *post in firstParse)
{
Tweet *tweetMessage = [[Tweet alloc] init];
tweetMessage.message = [post objectForKey:@"text"];
tweetMessage.user = [post objectForKey:@"from_user"];
[tweetViewController.tweets addObject:tweetMessage];
NSLog(@"%d",[tweets count]);
//NSLog(@"%@: %@", [post objectForKey:@"from_user"], [post objectForKey:@"text"]);
}
}];
Tweet *tweetMessage = [[Tweet alloc] init];
tweetMessage.message = @"HELLO";
tweetMessage.user = @"HELLO";
[tweetViewController.tweets addObject:tweetMessage];
return YES;
Сообщения Hello отображаются правильно, а сообщения в блоке - нет.