ios 使用`dataWithData` +非阻塞线程的高CPU活动

anhgbhbe  于 2023-06-07  发布在  iOS
关注(0)|答案(2)|浏览(198)

我试图解决一个问题,我可以看到我的iDevice上,但不是在我的Mac(显然)。
我在这一行标记了一个非常高的CPU活动:

data = [NSData dataWithData:UIImageJPEGRepresentation(image, 1.0)];

当我下载并显示高清图片(4- 5 Mo)时会出现此问题。
我的代码有什么问题吗?或者我做了什么非常糟糕的事情?

编辑

最后,这条线并不那么重要。我的问题是我以为我的异步方法在另一个线程中。不是的
我开始考虑新的线程:

[NSThread detachNewThreadSelector:@selector(test:) toTarget:self withObject:myObject];

对于我的问题,这是最好的方法吗?

hfwmuf9z

hfwmuf9z1#

基本上,只要有可能,CPU密集型操作都应该在后台线程上执行,以避免阻塞应用程序中的任何用户交互。希望你能照顾好它。
此外,您的是一个与图像构建/操作相关的过程,这往往是CPU密集型的。

pgx2nnw8

pgx2nnw82#

有一个解决方案here很好地解释了非阻塞线程使用NSManagedObjectContext与孩子的问题。
对于另一个问题(高CPU活动)是由于这个非阻塞线程问题。

相关问题