2011-09-27 93 views
0

有沒有什麼辦法讓我有一種方法睡覺,直到發佈通知?這是針對異步的NSURLConnection。出於多種原因,我無法移動到同步連接。方法睡眠直到通知

+0

這似乎極像是在對問題的雙重信息[等待NSURLConnection的(http://stackoverflow.com/questions/7572713/wait-for-an-nsurlconnection)?請不要這樣做。 –

+1

如果一種方法睡覺,它睡覺與魚。它鎖定了用戶界面,iOS會終止該應用程序。 –

回答

1

方法不能「睡覺」;只適用於線程。只需將需要等待的代碼拆分爲另一種方法,並在通知到達時調用該方法。

- (void) doStuffBeforeConnection { 

    [self doPreConnectionStuff]; 

    NSURL * url = [NSURL URLWithString:@"/U/R/L"]; 

    NSURLRequest * request = [NSURLRequest requestWithURL:url 
              cachePolicy:NSURLRequestReturnCacheDataElseLoad 
             timeoutInterval:0]; 
    NSURLConnection * conn = [NSURLConnection connectionWithRequest:request 
                 delegate:self]; 

    return; 
    // We are now "waiting"... 
} 

- (void) connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response { 

    [self nowDoStuffThatNeededToWait:response]; 
} 
-1

使用addobserver並設置一個目標類,並在選擇器上觸發通知。當您需要觸發時,請使用帶notificatonName的postNotification。 那裏你去..!

+0

觀察員可以添加和通知可以通過使用[NSNotificationCenter defaultCenter] – samfisher

+0

張貼有沒有辦法做到這一點,而無需添加一個不同的方法選擇器? – Baub

+0

正如您所提到的「直到發佈通知」,因此它需要一個選擇器來響應通知。如果沒有選擇器附帶通知,則沒有用於發佈通知的目的。 – samfisher