我正在寻找一种在主线程上使用两个参数执行选择器的好方法
我真的很喜欢使用
- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait
方法,除了现在我有两个参数。
所以基本上我有一个委托,我需要在加载图像时通知它:
[delegate imageWasLoaded:(UIImage *)image fromURL:(NSString *)URLString;
但是我这样做的方法可能会在后台线程中调用,并且委托将使用此图像来更新 UI,所以这需要在主线程中完成。所以我真的希望委托也能在主线程中得到通知。
所以我看到了一个选项——我可以创建一个字典,这样我只有一个对象,其中包含我需要传递的两个参数。
NSDictionary *imageData = [NSDictionary dictionaryWithObjectsAndKeys:image, @"image", URLString, @"URLstring", nil];
[(NSObject *)delegate performSelectorOnMainThread:@selector(imageWasLoaded:) withObject: imageData waitUntilDone:NO];
但这种方法对我来说似乎不合适。有没有更优雅的方法来做到这一点?也许使用 NSInvocation?提前致谢。