このコードを実行すると...
-(IBAction)loginWithTwitter:(id)sender {
NSLog(@"Logging in with twitter");
ACAccountStore *accountStore = [[ACAccountStore alloc]init];
ACAccountType *accountType = [accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter];
[accountStore requestAccessToAccountsWithType:accountType options:nil completion:^(BOOL granted, NSError *error) {
if (error) {
[self showError:error];
return;
}
if (granted) {
NSArray *accountsArray = [accountStore accountsWithAccountType:accountType];
if ([accountsArray count] > 1) {
NSLog(@"Multiple twitter accounts");
}
ACAccount *twitterAccount = [accountsArray objectAtIndex:0];
NSLog(@"%@", twitterAccount);
[self pushMainController];
}
}];
}
が実際に呼び出されるまでに 5 ~ 10 秒の遅延がありpushMainController
ますが、アカウント情報は (事前承認後) すぐにログに記録されます。ただし、ブロックの後に呼び出しを移動するpushMainController
と、すぐに発生します。唯一の問題は、ユーザーがその時点で必ずしもログインしているとは限らないことです。ネットワーク接続などの変数が原因で、ブロックが応答するまでに 1 秒かかる場合があることは理解していますが、これを理解するのを手伝ってくれる人はいますか?