2011-09-27 92 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