2 u010175365 u010175365 于 2013.05.29 15:14 提问

ios NSThread在start后的运行问题
-(void)gogo:(NSString *)str{
    for (int i=0; i<100; i++) {
        NSLog(@"thread in gogo-->%@",[NSThread currentThread]);
        [NSThread sleepForTimeInterval:1.0f];
    }
}
-(void)startGo{
    NSThread *t1 = [[NSThread alloc]initWithTarget:self selector:@selector(gogo:) object:nil];
    [t1 start];
    NSLog(@"thread in startGo -->%@",[NSThread currentThread]);

thread线程已经start了,但是每次程序运行的时候都没有gogo这个方法里面的输出啊???
另外,当我换作[self performSelector之后,就可以看到在gogo中的循环输出了

3个回答

zhanglei5415
zhanglei5415   Rxr 2013.05.30 14:15

没发现什么不妥,试了一下你的代码是可以走gogo这个方法的.

g989_1314125
g989_1314125   2013.05.30 15:08

是不是用了ARC?如果用了,你的 t1还来不及干什么就会被释放。

aa3214560
aa3214560 回复FabricMilk: 虽然是两年前的了,我还是回答一下,好像是因为线程需要一个runloop循环,在ios程序中,直接又个runloop,而控制台的话,新建的线程还没执行完,main方法就结束了,结果就不会打印。
2 年多之前 回复
u010175365
u010175365 我也不清楚是不是这么一回事,但是我如果在ios程序中执行就没问题,但是直接在mac的控制台程序里面运行,就看不到输出
接近 5 年之前 回复
pearlhuzhu
pearlhuzhu   2013.06.03 19:25

我把你代码拷过来,运行,是对的啊。你再仔细看看。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!