Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何以编程方式确定iPhone操作系统中的CPU使用率或系统繁忙/占用情况?_Iphone_Cocoa Touch_Performance_Uikit - Fatal编程技术网

如何以编程方式确定iPhone操作系统中的CPU使用率或系统繁忙/占用情况?

如何以编程方式确定iPhone操作系统中的CPU使用率或系统繁忙/占用情况?,iphone,cocoa-touch,performance,uikit,Iphone,Cocoa Touch,Performance,Uikit,我的应用程序在滚动时做了一些漂亮但很重的核心动画。有时它会因为性能不好而崩溃。所以我需要一些方法来找出是否有足够的能力来制作动画,如果没有,我就不做了。最好的办法是我可以问一下系统有多忙 更新:我的意思是特别是核心动画。我不会那样做。如果你的应用程序崩溃了,那就太重了。你可以用一些工具运行你的应用程序,看看你的瓶颈在哪里 因此,在不试图听起来太刺耳的情况下,最好的方法是重写某些部分,以便让你的应用程序始终在iPhone上运行我不会这么做。如果你的应用程序崩溃了,那就太重了。你可以用一些工具运行你

我的应用程序在滚动时做了一些漂亮但很重的核心动画。有时它会因为性能不好而崩溃。所以我需要一些方法来找出是否有足够的能力来制作动画,如果没有,我就不做了。最好的办法是我可以问一下系统有多忙


更新:我的意思是特别是核心动画。

我不会那样做。如果你的应用程序崩溃了,那就太重了。你可以用一些工具运行你的应用程序,看看你的瓶颈在哪里


因此,在不试图听起来太刺耳的情况下,最好的方法是重写某些部分,以便让你的应用程序始终在iPhone上运行

我不会这么做。如果你的应用程序崩溃了,那就太重了。你可以用一些工具运行你的应用程序,看看你的瓶颈在哪里


因此,在不试图听起来太刺耳的情况下,你最好的方法是重写某些部分,以便让你的应用程序始终在iPhone上运行

通过动画,你是指帧之间连续播放(如动画GIF)还是一些核心动画(OpenGL)使用贴图纹理移动多边形的效果

如果是前者,我真的会考虑在所有情况下优化动画或消除动画的一些方法。

如果是后者,我会深入挖掘问题的根源。核心动画在正常情况下会删除帧,以避免在第一时间陷入这种情况

在任一种情况下,您可能会考虑更早加载纹理资产。当我在函数调用中创建UIImage时,我在应用程序中遇到了一些动画方法的问题,这些方法采用UIImage参数。在代码中提前一点预加载资产很好地解决了这个问题

例如:
坏的

[[UIImage imageNamed:@"checkmark.png"] drawAtPoint:p];
更好

//declared at top of class
static UIImage *checkmark = nil;
在init中:

checkmark = [UIImage imageNamed:@"checkmark.png"];
在drawRect中:

[checkmark drawAtPoint:p];
您需要根据您的具体情况调整此技术。在我的例子中,经常使用复选标记,而且它非常小,我不介意将内存永久地用于它


我想知道是否可以通过确保资产已准备好供应用程序使用来修复崩溃。

通过动画,您是指一个接一个播放的帧(如动画GIF)还是某个正在移动带有贴图纹理的多边形的CoreAnimation(OpenGL)效果

如果是前者,我真的会考虑在所有情况下优化动画或消除动画的一些方法。

如果是后者,我会深入挖掘问题的根源。核心动画在正常情况下会删除帧,以避免在第一时间陷入这种情况

在任一种情况下,您可能会考虑更早加载纹理资产。当我在函数调用中创建UIImage时,我在应用程序中遇到了一些动画方法的问题,这些方法采用UIImage参数。在代码中提前一点预加载资产很好地解决了这个问题

例如:
坏的

[[UIImage imageNamed:@"checkmark.png"] drawAtPoint:p];
更好

//declared at top of class
static UIImage *checkmark = nil;
在init中:

checkmark = [UIImage imageNamed:@"checkmark.png"];
在drawRect中:

[checkmark drawAtPoint:p];
您需要根据您的具体情况调整此技术。在我的例子中,经常使用复选标记,而且它非常小,我不介意将内存永久地用于它


我想知道是否可以通过确保资产已准备好供应用程序使用来修复您的崩溃。

您不需要特别做什么?询问系统有多忙以调整负载。这是:作为响应吗?您不需要特别做什么?询问系统有多忙以调整负载。这是:在对此有何回应?