Fork me on GitHub

iphone开发——同时新建多个线程不执行的问题

今天遇到一个奇怪的问题,使用NSOperationQueue连续添加多个子线程时出现子线程不执行的问题。解决方法如下:

在连续的打开多个子线程时,设置一定的时间间隔。    [NSThread sleepForTimeInterval:0.1];

 

    NSInvocationOperation * theOp = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(getDetailProfile:) object:(void *)0];
    [[Func appOperationQueue] addOperation:theOp];
    [theOp release];
    
    [NSThread sleepForTimeInterval:0.1]; //不能省略此处代码。联系添加多线程时,应设置一定时间间隔
    
    NSInvocationOperation * theOp1 = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(getDetailProfile:) object:(void *)1];
    [[Func appOperationQueue] addOperation:theOp1];
    [theOp1 release];
    
    [NSThread sleepForTimeInterval:0.1];//不能省略此处代码。联系添加多线程时,应设置一定时间间隔

    NSInvocationOperation * theOp2 = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(getDetailProfile:) object:(void *)2];
    [[Func appOperationQueue] addOperation:theOp2];
    [theOp2 release];
    
    [NSThread sleepForTimeInterval:0.1];//不能省略此处代码。联系添加多线程时,应设置一定时间间隔
    
    NSInvocationOperation * theOp3 = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(getDetailProfile:) object:(void *)3];
    [[Func appOperationQueue] addOperation:theOp3];
    [theOp3 release];
    
    [NSThread sleepForTimeInterval:0.1];//不能省略此处代码。联系添加多线程时,应设置一定时间间隔
    
    NSInvocationOperation * theOp4 = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(getDetailProfile:) object:(void *)4];
    [[Func appOperationQueue] addOperation:theOp4];
    [theOp4 release];

posted on 2012-03-04 13:29  pengyingh  阅读(216)  评论(0编辑  收藏  举报

导航