来自不同XIB的行动

时间:2011-03-19 02:00:30

标签: objective-c multithreading ios ios4 xib

我正在尝试从不同的XIB和类中执行操作。我已经盯着这段代码好几天了,是的,几天。请帮忙!下面是一些代码。

CaptionView.h文件

#import "processViewController.h" 

CaptionView.m文件

processViewController *test = [[processViewController alloc] init];
[test startUploads];

processViewController.m

- (IBAction)startUploads {
[NSThread detachNewThreadSelector:@selector(startUploadsTwo) toTarget:self withObject:nil];
}

- (IBAction)startUploadsTwo {
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 

... code...

[pool release];
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
}

由于某种原因,没有调用该操作。任何帮助表示赞赏! - 库尔顿

1 个答案:

答案 0 :(得分:3)

如果我没弄错,你就无法从工作线程更新UI。因此,您应该从主线程更改networkIndicator

您仍然可以使用此方法从工作人员触发此操作:

[self performSelectorOnMainThread:@selector(updateSpinner:)
                            withObject:nil
                         waitUntilDone:false];

来自the docs

  

主线程包含应用程序的主运行循环,是NSApplication对象接收事件的地方。

此引用是指NSApplication,适用于OSX,但我想这同样适用于iOS上的UIApplication。但是找不到实际的报价。