Frage

Ich benutze Twitter API Tweets zu veröffentlichen. Manchmal kann dies einige Zeit in Anspruch nehmen, so dass ich die „Tweet Posting“ Operation im Hintergrund ausgeführt werden soll. Dafür ich verwende GCD, wie folgt aus:

- (void)myClassMethodToPostTweet {
    dispatch_async(network_queue, ^{
        // … construct the tweet message
        NSString *tweet = @"…";

        // … check if network is available
        [self isConnectedToWeb];

        // … initialize twitter API
        TwitterAPIClass *twitterAPI = [[[TwitterAPIClass alloc] init…] autorelease];
        twitterAPI.delegate = self;
        twitterAPI.APIKey = ...;
        twitterAPI.APISecret = ...;

        // … use twitter API to post the tweet
        [twitterAPI postTweet:tweet];
    });
}

...
/* and when the API reports a successful operation, update the required variables and UI */
...

- (void)twitterAPIDelegateMethodReportingOperationSuccess {
    // … update any variables/records

    // … update UI
    dispatch_async(dispatch_get_main_queue(), ^{
        // … UI updation code
    });
}

Das Problem ist, ich bin nicht immer die Delegaten Rückruf! Was bin ich?

War es hilfreich?

Lösung

Haben Sie versucht, die Twitter-Verbindung auf dem Haupt-Thread ausgeführt wird? Wenn es auf dem Hauptthread arbeitet und nicht auf einige Hintergrund Warteschlange, könnten Sie in run Schleife Probleme mit NSURLConnection laufen. (Nur eine wilde Vermutung.)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top