Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/37.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 对象分配和内存警告_Iphone_Objective C_Xcode - Fatal编程技术网

Iphone 对象分配和内存警告

Iphone 对象分配和内存警告,iphone,objective-c,xcode,Iphone,Objective C,Xcode,我有一个应用程序,需要“活动字节”高达3mb。显示内存警告的应用程序将持续崩溃。当我使用对象分配工具时,我可以在许多地方看到livebytes.im使用imageWithContentsOfFile。我可以看到NSCONCETEDATA对象占用了更多内存。原因是什么?我可以知道一个应用程序允许多少内存吗 你不知道自己可以使用多少内存,但一般来说,在iPhone/iPod设备上可以使用高达20mb的内存。但是,您的应用程序可能会被终止,这不仅是因为使用了太多内存,还因为在发出警告时未能减少内存使用

我有一个应用程序,需要“活动字节”高达3mb。显示内存警告的应用程序将持续崩溃。当我使用对象分配工具时,我可以在许多地方看到livebytes.im使用imageWithContentsOfFile。我可以看到NSCONCETEDATA对象占用了更多内存。原因是什么?我可以知道一个应用程序允许多少内存吗

你不知道自己可以使用多少内存,但一般来说,在iPhone/iPod设备上可以使用高达20mb的内存。但是,您的应用程序可能会被终止,这不仅是因为使用了太多内存,还因为在发出警告时未能减少内存使用。因此,即使你没有使用那么多内存,如果系统检测到你在收到内存警告时没有释放任何内存,你的应用程序可能会被关闭。至少这是我的经验,也许其他人对正在发生的事情有更详细的了解

imageWithContentsOfFile:
有一个内置的缓存机制,因此如果反复加载相同的图像,开销应该很小


编辑:
带有内容的图像文件:
不缓存图像。方法
imageNames:
缓存图像,这是唯一一种这样做的图像创建方法。

图像缓存由库负责。但是,如果您确定只有3mb的活动内存(请使用活动监视器工具来确定),那么问题可能是其他原因。当您收到内存警告时,视图将被解除分配,并且很容易使视图控制器进入出现意外错误的状态。我有过很多次这样的问题。问题可能不是内存,而是视图控制器或其他代码无法处理必须重新加载视图的情况。如果它们依赖于加载视图后初始化的内容,例如。是的,我确定我只有3mb的活动字节。你能详细解释一下吗?据我所知,imageWithContentsOfFile没有缓存机制,它只返回一个自动删除的UIImage对象。UIImage的+imageNamed是具有缓存的图像。@Brainfeeder:你说得对,imageWithContentsOfFile:不缓存图像,只有imageNamed:缓存图像。文档中有:)