私はいくつかのタスクを行うparticluarメソッドでループする必要があります。私はperformselectoronmainthreadメソッドがdoneメソッドまで待つメソッドを使用しました。私は一度それを呼び出す場合、その正常に動作します。しかし、forループを呼び出すと失敗します。すなわち これはコードです:performselectoronmainthreadを使用して特定の方法でループしたい
for (int i=1;i<=3;i++) {
ip=i;
[self performSelectorOnMainThread:@selector(createThread:) withObject:ip waitUntilDone:YES];
}
-(void)createThread:(NSString*)ipIs
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSLog(@"Ip address is :%@",ipIs);
[SimplePingHelper ping:ipIs target:self sel:@selector(Result:)];
[pool release];
}
- (void)Result:(NSNumber*)success {
//do some stuff
}
問題は、私は一度、このループを実行し、それが結果のメソッドを呼び出したときに、このコードは正常に動作していることです。しかし、performSelectorOnMainThreadでループを使用して別の変数をit.Thenに渡すと、実行パスが変わり、結果メソッドが呼び出されません。
異なる変数で同じメソッドを実行したいが、実行するタスクが同じであるためループしています。私はwaituntilを使用しています:YES value..butまだ動作していません アイデアはありますか?
を、私はCreateThreadを方法の目的が何であるかわからないんだけど、あなたはのメインスレッドをブロックしています実行中のアプリケーション(waitUntilDone:YES)。それはおそらくほんの少しの時間がかかりそうであることが分かっていない限り、*ひどい*のアイデアです。 (そして "IP"が "IPアドレス"を意味していて、何かネットワーク関連のことをやっているなら、間違いなくメインスレッドをブロックしてはいけません。) –