0
我有一個應用程序,它有4 TableViewController每個做出RSSParser的一個實例,有一個叫做commonInit函數開始解析。 最初我從TableViewController中的默認init函數調用commonInit,它工作正常,但在沒有互聯網訪問的情況下,我會得到4個警告窗口,這是有點不好的mojo。 所以不是我想要做的的appdelegate可達性檢查,然後通知每個TableViewController並啓動解析器。該可達性檢查是在seperat線程啓動,以避免失速,如果DNS問題等iPhone線程問題
但是當我運行應用程序的解析器被調用罰款,但他們從來沒有收到任何回數據。 在我的解析器中,我遵循NSURLConnection的蘋果示例,用於異步下載Feed。
所以在我的appdelegate我:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
....
// Reachability setup, a new thread is created to make it async to avoid possible stall.
[NSThread detachNewThreadSelector:@selector(checkConnection) toTarget:self withObject: nil];
...
return YES;}
,並在此之後,我有:
-(void)checkConnection{
//Test for Internet Connection
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
Reachability *r = [Reachability reachabilityWithHostName:@"www.somehostname.com"];
NetworkStatus internetStatus = [r currentReachabilityStatus];
if ((internetStatus != ReachableViaWiFi) && (internetStatus != ReachableViaWWAN)) {
UIAlertView * errorAlert = [[UIAlertView alloc] initWithTitle:@"Missing Internet" message:@"Can not connect to the internet at the moment." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[errorAlert show];
} else {
[[NSNotificationCenter defaultCenter] postNotificationName:@"activation" object:nil];
}
[pool release];}
,正如你可以看到我做如下通知,如果有一個連接:
[[NSNotificationCenter defaultCenter] postNotificationName:@"activation" object:nil];
希望你們能幫助我。