我必须维护一个人的代码。代码打开一个线程。 iOS中的线程工作器函数(以及我所知的任何其他语言)只接受一个参数。为了克服这个问题,代码创建了一个数组,将所有参数添加到数组中并将其传递给线程。这是代码。
NSArray* params = [[NSArray alloc] initWithObjects: mainView, actionFlag, nil];
[self performSelectorOnMainThread:@selector(updateWorker:) withObject:params waitUntilDone:NO];
这个函数就是这样调用的
-(void)updateWorker:(NSArray*)params
{
UIView* view = [params objectAtIndex:0];
bool actionFlag = ((NSNumber*)[params objectAtIndex:1]).boolValue;
/* do stuff with view and actionFlag */
}
我有一种直觉,认为这在很多层面都是错误的,但无法为这种情况建立一个有效的论据。
将数量的参数作为数组传递有什么缺点?
答案 0 :(得分:3)
实际上你正在做的是技术正确(但我明白为什么感觉不对)。
如果你想要感觉更好,在这种情况下我要做的是实例化(创建)一个“NSDictionary
”对象,然后将对象/值设置为有用的键和“updateWorker
“方法,通过”objectForKey:
“获取对象。
这样做对于你(或其他人)将来更容易维护,因为你不必四处寻找数组位置1,数组位置2等的内容。
答案 1 :(得分:2)
其中大多数是未来的更新, 有些情况(不是很罕见)可能会发生:
这里需要注意的一点是,所有这些情况都很难调试,因为你将从一个线程转移到另一个线程