调用这样的东西被认为是线程安全的吗?它只是创建一个 UIImage,没有 UI 更新。我找不到任何关于此的文档。
UIImage * hiResImage = [[UIImage alloc] initWithContentsOfFile:path];
仅供参考,我稍后会像这样在主线程上进行 UI 更新...
[imageViewForZoom performSelectorOnMainThread:@selector(setImage:) withObject:hiResImage waitUntilDone:NO];
我已经知道的:
- 从 iOS4 开始,UIKit 的很多绘制方法都变成了线程安全的。从这里阅读。
- 我不应该在后台线程上更新 ui(例如 no
[myImageView setImage:image];
)
编辑:让我们看另一个观点。“非线程安全”是否意味着它有可能永远被阻塞?或者只是意味着无法保证开始/持续时间的执行时间。如果是后一种情况,那么如果我们在加载图像时会有一些“不确定量”的延迟是没有问题的。UI 更新在主线程上完成。因此,至少对于创建 UIImage 而言,它仍然被认为是非线程安全的。
我知道这与问题并没有真正的关系,但只是想指出它,因为我担心我原来的问题不会有明确的答案:)