我试图解决一个问题,我可以看到我的iDevice上,但不是在我的Mac(显然)。
我在这一行标记了一个非常高的CPU活动:
data = [NSData dataWithData:UIImageJPEGRepresentation(image, 1.0)];
当我下载并显示高清图片(4- 5 Mo)时会出现此问题。
我的代码有什么问题吗?或者我做了什么非常糟糕的事情?
编辑
最后,这条线并不那么重要。我的问题是我以为我的异步方法在另一个线程中。不是的
我开始考虑新的线程:
[NSThread detachNewThreadSelector:@selector(test:) toTarget:self withObject:myObject];
对于我的问题,这是最好的方法吗?
2条答案
按热度按时间hfwmuf9z1#
基本上,只要有可能,CPU密集型操作都应该在后台线程上执行,以避免阻塞应用程序中的任何用户交互。希望你能照顾好它。
此外,您的是一个与图像构建/操作相关的过程,这往往是CPU密集型的。
pgx2nnw82#
有一个解决方案here很好地解释了非阻塞线程使用
NSManagedObjectContext
与孩子的问题。对于另一个问题(高CPU活动)是由于这个非阻塞线程问题。