使用NSOpeation时遇到了一种奇怪的行为。 我正在调用一个函数(-createTagView)来创建一个UIButton,然后将其添加到视图中。 出于某种原因,它不会添加它们。如果我从NSOperation外部调用该函数,一切正常。
有什么想法吗?感谢。
这是我如何创建NSOperation(在ViewController对象中)
> NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(createTagView:) object:data];
> [operationQueue addOperation:operation];
> [operation release];
这就是所谓的函数([Tag view]是UIButton):
-(void) createTagView:(NSMutableArray *) data
{
NSInteger t_id = (NSInteger)[data objectAtIndex:0];
NSString *t_name = (NSString *)[data objectAtIndex:1];
NSString *t_rawname = (NSString *)[data objectAtIndex:2];
Tag *t = [[Tag alloc] initWithId:(NSInteger)t_id name:t_name rawname:t_rawname];
[self.view addSubview:[t view]];
[t release];
}
答案 0 :(得分:0)
NSOperation使用单独的线程来运行,你必须在主线程中调用[addSubview:]。有一个方法[object performSelectorOnMainThread:withObject:waitUntilDone:] - 你可以用它来添加子视图。
[self.view performSelectorOnMainThread:@selector(addSubview:) withObject:aView waitUntilDone:YES];