以下代码运行良好:
NSURL* urlAddressJSonUrl = [NSURL URLWithString:urlString];
dispatch_async(globalQueue,
^{
NSData *imageData = [NSData dataWithContentsOfURL:urlAddressJSonUrl];
[self performSelectorOnMainThread:@selector(setImage:)
withObject:[UIImage imageWithData:imageData] waitUntilDone:NO];
});
因为我需要从不同的 viewController 调用它,所以我想将它放在具有公共(public)全局帮助函数 (+) 的通用类中,所以我正在寻找一种方法来将选择器和目标作为参数传递给 performSelectorOnMainThread 以运行与
最佳答案
你暗示你有目标。你为什么不直接用目标来调用它呢?
NSURL* urlAddressJSonUrl = [NSURL URLWithString:urlString];
dispatch_async(globalQueue, ^{
NSData *imageData = [NSData dataWithContentsOfURL:urlAddressJSonUrl];
[target performSelectorOnMainThread:@selector(setImage:)
withObject:[UIImage imageWithData:imageData]
waitUntilDone:NO];
});
或者更好
NSURL* urlAddressJSonUrl = [NSURL URLWithString:urlString];
dispatch_async(globalQueue, ^{
NSData *imageData = [NSData dataWithContentsOfURL:urlAddressJSonUrl];
dispatch_async(dispatch_get_main_queue(), ^{
[target setImage:[UIImage imageWithData:imageData]];
});
});
关于ios - performSelectorOnMainThread 在另一个 View Controller 上调用选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21541680/