xcode 및 ios5에서 작업하려고했으며 Twitter API를 사용하여 짹짹을 가져 오는 TWRequest가 있습니다. 그러나 iOS5에서 블록이 어떻게 작동하는지 혼란 스럽습니다. 이 코드는 I = 짹짹했다고 가정TwitterRequest Block Syncronization 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]; 어딘가에 전화 해.
그러나이 작업을 수행 할 때마다 항상 0이됩니다. 몇 가지 테스트를 한 후 NSLog가 실행 된 후 블록 코드가 실행 중이라는 것을 알았습니다. 코드가 정상적으로 작동하지 않는 것을 의미합니다.
누구든지 이러한 문제를 해결하는 방법을 알고 있습니까? 내가 배열 객체를
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;
헬로 메시지가 제대로 표시하지만 블록의 사람들이하지 않는이있는의 ViewController로 트윗을 이동하려고했기 때문에
나는이 나중에 예를 시도했다.
절대적으로 필요하지 않은 경우 동기 코드를 사용하지 마십시오. –
그러면 요청을 어떻게 부르겠습니까? – Jetpackman
이렇게하면되지만, 비동기로 코드를 실행하도록 * 허용해야한다는 것을 의미합니다. 블록 내부에 트윗로드와 관련된 코드를 삽입하십시오. –