Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/38.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 避免iOS内存泄漏的最佳方案_Iphone_Ipad_Memory Management_Memory Leaks_Pulse - Fatal编程技术网

Iphone 避免iOS内存泄漏的最佳方案

Iphone 避免iOS内存泄漏的最佳方案,iphone,ipad,memory-management,memory-leaks,pulse,Iphone,Ipad,Memory Management,Memory Leaks,Pulse,我正在构建一个可以读取rss文件的应用程序,比如Bing或Pulse,所以我构建了一个类(UIViewController),显示提要中的每个条目,一个类包含条目列表,另一个类同时显示所有提要,我没有使用任何xib文件,所以我在每个类中实现了一个方法,在每次旋转后调用该方法来重置该类中视图的帧。但是我在内存中遇到了一个问题,特别是在调用该方法时,当旋转发生时,知道它只是为视图中的每个帧分配了一个CGRect。 因此,请您帮助我避免这个问题,或者建议一种不同的方法来避免它,我不使用xib文件是正确

我正在构建一个可以读取rss文件的应用程序,比如Bing或Pulse,所以我构建了一个类(UIViewController),显示提要中的每个条目,一个类包含条目列表,另一个类同时显示所有提要,我没有使用任何xib文件,所以我在每个类中实现了一个方法,在每次旋转后调用该方法来重置该类中视图的帧。但是我在内存中遇到了一个问题,特别是在调用该方法时,当旋转发生时,知道它只是为视图中的每个帧分配了一个CGRect。 因此,请您帮助我避免这个问题,或者建议一种不同的方法来避免它,我不使用xib文件是正确的,还是应该在可能的情况下使用它们,并在其中设置旋转(使用自动调整大小掩码)

如果有像这些应用程序这样的复杂的免费示例,有人能给我指一下吗

任何帮助都将不胜感激,
提前感谢…

正确释放已全局分配和定义的对象。当UIViewController的对象处于活动状态时,请勿释放该对象。大多数泄漏问题都是在UIViewController的对象超出范围之前释放的。

首先,当nib文件对您有用时,没有理由避免使用它们。它们通常是有用的。当nib文件对您没有用处时,没有理由使用它们。如果您有复杂的布局,它们肯定非常有用。然而,是否使用它们是基于特定应用程序的个人选择。作为初学者,我建议您使用它们并熟悉它们,尤其是依赖Xcode模板来正确设置它们

不管怎样,Nib文件不是你的问题。您正在泄漏内存,需要调查原因。首先,运行静态分析器以确保没有明显的错误。然后在Instruments(Leaks)下运行你的应用程序,并查找大的泄漏。然后在Instruments(Allocations)下运行你的应用程序,看看什么消耗了最多的内存。这会让你指出你的错误


在没有深入了解代码的情况下,最有可能的原因是您误用了IVAR。确保通过访问者访问IVAR(除了
init
dealloc
和访问者中)。直接访问IVAR是iOS内存问题的第一个原因。

我通过init和alloc中的self关键字访问任何其他viewController中的任何视图或视图控制器,我确保每个alloc都有相应的释放或自动释放,但我的问题是,如果我有一个scrollView,比如说,它现在包含大约25个Web视图,我会在列表中保留所有这些Web视图的引用,当旋转设备时,我会通过引用调整每个视图的大小,这就是我基本上要问的,这会导致任何问题吗?谢谢你解释得很好的回答。嘿,罗布,谢谢你在我的帖子上的评论。我想你解释得很好,这让我删除了我的帖子。考虑到它是编程新手,这有点让人困惑。我也只有大约6个月的obj-c开发经验。不用说,我对它的细节非常满意。25 web视图很多,但它不是一个漏洞。你为什么相信你在泄密?嗨,再次感谢你的帮助。我已经使用静态分析器和仪器工具确保没有泄漏,我的应用程序在最坏的情况下大约需要8兆字节,但当我点击加载网络视图的按钮时,它会崩溃,出现“数据格式化程序暂时不可用…”当这种情况发生时,分配的内存约为3M.B,因此我猜测这可能是另一个错误,或者WebView的初始化需要一些Instruments工具无法检测到的资源。您能否告诉我此崩溃是否是由于WebView造成的,以及Instruments工具无法检测到的原因。再次感谢你。