IOS function called recursion in its callback block
===

I implement the get twitter time line function in IOS client,
It's to get the time line from network, if successful, rearrange it in some seconds later,
if not successful, also rearrange it in the some special seconds later.
This is my codes.

    - (void)getPublicTimeline
    {
        TWRequest *postRequest = [self createGetHomeTimelineRequest];
        [postRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse     *urlResponse, NSError *error){
        
        double delayInSeconds = 4.0 * 60;
        if ([urlResponse statusCode] == 200) {
            
        // DO Something with the data.
            dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);

            dispatch_after(popTime, _queue, ^(void){
                [self getPublicTimeline];
            });
            
        }else {
            
            NSLog(@"Http reponse status code is %d", [urlResponse statusCode]);
            delayInSeconds = 4.0;
            dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
            dispatch_after(popTime, _queue, ^(void){
                [self getPublicTimeline];
            });
        }
        
    }]; 
}

First time, I called this function like this [self getPublicTimeline], not in the dispatch block;

And I have some questions:

1. this function will be deadlock? From http://stackoverflow.com/questions/8668585/dispatch-sync-call-into-a-dispatch-async-call, so I think it will be deadlock.

2. If it can work for my requirement, how I can I stop it to get? Maybe I release the _queue to stop it?

Thanks.