2010-12-14 2 views
1

J'ai besoin d'un simple pinger sur l'iPhone. Donc, j'essaie d'obtenir le SimplePing example en cours d'exécution sur iPhone. Mais quand je lance le pinger comme dans l'exemple, le runloop principal ne gère pas les événements générés par SimplePing. Voici le initcode:essayer SimplePing sur iPhone, mais le runloop principal ne gère pas les événements de SimplePing

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  

_pinger = [SimplePing simplePingWithHostName:@"192.168.210.1"]; 
_pinger.delegate = self; 
[_pinger start]; 
NSLog(@"Pinger started"); 
[self.window makeKeyAndVisible]; 
return YES; } 

Si je déclenche l'runloop directement dans cette fonction avec somthing comme ça:

do { 
    [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]]; 
} while (_pinger != nil); 

cela fonctionne. Donc ma question est, pourquoi les événements ne sont pas traités dans la boucle d'exécution principale de UIApplicationMain, et que dois-je faire pour que cela soit fait par le runloop principal?

+0

J'ai couru dans le même vous ne trouvez de problèmes finalement une solution? – leecbaker

Répondre

0

Eh bien, faire quelque chose comme ceci:

-(void)stopPinging 
{ 

NSLog(@"STOP"); 

self.pinger = nil; // or _pinger = nil in your case so that the while loop doesn't execute again. 

[self.pinger stop]; // this method will call the Simpleping class method stop which takes care of the rest .. 


} 
Questions connexes