На данный момент я довольно расстроен, но я уверен, что это то, что мне не хватает. В этом коде мой segue для моего нового viewController появляется после выполнения остальной функции. Как заставить мой viewController быть исполняемым кодом? В основном остановите функцию tweetText, пока она не закрыта. Я пытаюсь дать пользователю возможность выбрать учетную запись Twitter, если ее несколько. Я пробовал много разных способов. В собственном примере кода Apple они предлагают предоставить пользователю опцию, но ничего не дают о том, как это сделать, не пропуская остальную часть кода.iOS: Grand Central Dispatch and ViewControllers
Вот код:
[accountStore requestAccessToAccountsWithType:accountType withCompletionHandler:^(BOOL granted, NSError *error) {
if(granted) {
dispatch_sync(dispatch_get_main_queue(), ^{
// Get the list of Twitter accounts.
self.accountsArray = [accountStore accountsWithAccountType:accountType];
if([self.accountsArray count] > 1 /* Check method to see if preference is still a valid account */) {
// Display user accounts if no preference has been set
[self performSegueWithIdentifier:@"TwitterAccounts" sender:self.accountsArray];
[tweet tweetText:tweetString account:self.twitterAccount type:AchievementTweet];
} else {
[tweet tweetText:tweetString account:[self.accountsArray lastObject] type:AchievementTweet];
}
});
} else {
[tweet performSelectorOnMainThread:@selector(displayText:) withObject:[NSNumber numberWithInt:403] waitUntilDone:NO];
}
}];
Почему вы не используете делегата? –
dispatch_sync (dispatch_get_main_queue() неверно, вы никогда не должны отправлять синхронным способом, используя основную очередь, так как это приведет к зависанию вашего приложения. – Pochi
Извините, но я думаю, что вы ошибаетесь в этом случае, этот код не замерзает, потому что по словам apple, эта функция уже использует gcd. Кажется, что она работает в другом потоке, и это проблема, с которой я сталкиваюсь. Я не могу заставить учетные записи возвращаться и показывать пользователю, чтобы выбрать. другие методы завершены. – Michael