objective-c - ARC引用计数解除分配和释放

标签 objective-c ios memory-management automatic-ref-counting

我有点困惑了。我正在创建一个带有 Storyboard的应用程序,并在 iPad 1 上运行它。该应用程序使用大量内存,因此达到 120mb,崩溃。根据我的理解,要消除这个问题,你需要释放、释放...重点是,对于 ARC,这应该是自动的。事实上,如果我添加例如: [label1 release];它给了我一个错误。但是这个ARC自动释放和dealloc好像不起作用!这是因为ARC的发布方式不同吗?

enter image description here

最佳答案

您不需要使用 ARC 手动保留/释放/自动释放。但是,如果您对许多未使用的对象有事件引用,它们仍将保留在内存中。使用 Instruments 分析您的应用程序,它将显示您为每个类创建了多少个对象以及它们消耗了多少内存。

使用 ARC,您仍然需要考虑内存使用情况,只是不需要太担心内存泄漏。

NSObject *bigMemObj = [[BigMemClass alloc] init];
//This creates the object in memory. In both arc and manual counting the retain count is 1

//Do stuff

//Prior to ARC you would have had to call [bigMemObj release]; before setting the variable to nil
bigMemObj = nil
//With ARC you don't have to do anything. The compiler inserts the release at compile time

另请阅读有关声明 iVar __strong 与 __weak 的文档。

如果不查看代码,就很难确定是什么消耗了所有内存,但希望这可以帮助您确定从哪里开始查找。

关于objective-c - ARC引用计数解除分配和释放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9932127/

相关文章:

将段落转换为具有动态内存的句子

ios - 在 iOS 7 上使用 iOS 7 之前的外观

iPhone 应用程序增加摇动手势灵敏度

ios - 在 iOS 中快速切换 View

ios - UIImagePickerController 错误旋转

ios - 如何在将 UIImage 保存到磁盘之前唯一标识它?

objective-c - Xcode 错误 : No known instance method for selector

ios - -[NSObject doesNotRecognizeSelector :]: 的符号断点

iphone - EXC_BAD_ACCESS 错误,内存管理问题

c++ - 如何在运行时查看 C 程序的内存布局?