gpt4 book ai didi

iphone - 想使用 performselectoronmainthread 在特定方法中循环

转载 作者:行者123 更新时间:2023-11-28 17:36:15 25 4
gpt4 key购买 nike

我必须循环执行某些任务的特定方法。我使用了 performselectoronmainthread wait until done 方法。如果我调用它一次,它工作正常。但是当我在 for 循环中调用它时它失败了。 IE这是代码:

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

}

问题是当我运行这个循环一次并调用 Result 方法时,这段代码工作正常。但是当我尝试在 performSelectorOnMainThread 中使用循环将不同的变量传递给它时,它的执行路径发生了变化。然后它不调用结果方法。

我正在循环,因为我想在不同的变量上运行这些相同的方法,但要执行的任务是相同的。我也在使用 waituntil done:YES value..但它仍然无法正常工作有什么想法吗?

最佳答案

尝试创建其他线程

myThread = [[NSThread alloc] initWithTarget:self selector:@selector(setupTimerThread) object:nil];
[myThread start];
-(void)setupTimerThread
{


NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];



timer2 = [NSTimer timerWithTimeInterval:0.04
target:self
selector:@selector(triggerTimer:)
userInfo:nil
repeats:YES];
NSRunLoop* runLoop = [NSRunLoop currentRunLoop];

[runLoop addTimer:timer2 forMode:NSDefaultRunLoopMode];
[runLoop run];

[pool release];
}
-(void)triggerTimer:
{
//this method will be called in loop set loop interval by setting the timers time duration in above method
}

编辑:

int ip=0;
-(void)triggerTimer:
{
ip++; // till ip<=3
[self createThread:ip];
}

关于iphone - 想使用 performselectoronmainthread 在特定方法中循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9736078/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com