0

我在使用 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];
}
4

1 回答 1

0

NSOperation 使用单独的线程运行,必须在主线程内调用 [addSubview: ]。有一个方法 [object performSelectorOnMainThread:withObject:waitUntilDone:] - 你可以使用它来添加子视图。

[self.view performSelectorOnMainThread:@selector(addSubview:) withObject:aView waitUntilDone:YES];
于 2010-07-18T20:19:54.607 回答