Objective c 调用[NSThread detachNewThreadSelector…]会停止UIImageView setImage的工作

Objective c 调用[NSThread detachNewThreadSelector…]会停止UIImageView setImage的工作,objective-c,xcode,Objective C,Xcode,我发生了一件奇怪的事,我不明白。 如果我运行这个方法 [self-setImage:[UIImage ImageName:@“Loader20.png”]]eg。 它在线程选择器方法之外工作良好, 但是它在选择器方法本身中不起作用,它什么也不做。 我是这样做的 - (id)init { self = [super init]; if (self) { //[self setImage:[UIImage imageNamed:@"Loader20.png"]]; [NSThrea

我发生了一件奇怪的事,我不明白。 如果我运行这个方法 [self-setImage:[UIImage ImageName:@“Loader20.png”]]eg。 它在线程选择器方法之外工作良好, 但是它在选择器方法本身中不起作用,它什么也不做。 我是这样做的

- (id)init {
self = [super init];
if (self) {

    //[self setImage:[UIImage imageNamed:@"Loader20.png"]];
    [NSThread detachNewThreadSelector:@selector(showLoadingImage) toTarget:self withObject:nil];

    }
      return self;
   }


-(void)showLoadingImage{

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];  
int i = 0;
int imageIncrement= 1;
bool run = true;
while (run){
    [NSThread sleepForTimeInterval:1];

    if(imageIncrement == 48){
        imageIncrement=1; 
        i++;
    }else{
        imageIncrement++;
    }
    NSString *imageString = [NSString stringWithFormat:@"%@%d%@", @"Loader", imageIncrement, @".png"];
    NSLog(imageString);

    [self setImage:[UIImage imageNamed:imageString]];
    if (i == 2){
        run = false;
        [NSThread exit];
    }

}
[pool release];

 }
有人能给我一些指导吗?我确保所有我想循环的图像都正确命名为testing with NSlog,但图像仍然没有改变

提前谢谢。
Brett

大多数
UIKit
都不是线程安全的,因此必须将图像分配给主线程上的imageview(不过,加载仍可以在后台线程中完成)。

UIKit只在主线程中工作。尝试将映像作为
NSData
加载到线程中,然后将
NSData
传递到主线程以用作
UIImage