使用`dataWithData` +非阻塞线程实现高CPU活动

时间:2014-06-15 13:13:47

标签: ios objective-c performance cpu nsdata

我正在尝试解决一个我可以在我的iDevice上看到的问题,但不能在我的Mac上看到(显然)。

我在这一行标记了非常高的CPU活动:

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

当我下载并显示高清图片(4-5Mo)时出现。

我的代码有什么问题或者我做的事情真的很糟糕吗?

修改 最后这条线并不重要。我的问题是我认为我的异步方法是在另一个线程中。事实并非如此。

我开始考虑新线程:

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

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

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

基本上,只要有可能,就应该在后台线程上执行CPU密集型操作,以避免阻止应用程序中的任何用户交互。希望你能照顾好。

此外,您与图像构建/操作相关的过程往往会占用大量CPU资源。

答案 1 :(得分:0)

有一个解决方案here很好地解释了使用带有子级的NSManagedObjectContext的非阻塞线程的问题。

对于另一个问题(高CPU活动)是由于这个非阻塞线程问题。