Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.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
iOS popViewController不释放内存,未调用dealloc_Ios_Objective C_Memory Management_Automatic Ref Counting_Dealloc - Fatal编程技术网

iOS popViewController不释放内存,未调用dealloc

iOS popViewController不释放内存,未调用dealloc,ios,objective-c,memory-management,automatic-ref-counting,dealloc,Ios,Objective C,Memory Management,Automatic Ref Counting,Dealloc,我对ARC下的内存管理有一些问题。当我在我的应用程序中打开viewcontroller时,它们都不会释放内存,有时也不会调用viewcontroller的dealloc。即使调用dealloc,内存也不会被释放。所以我想问的是,即使调用viewController的dealloc方法,内存也会消耗多少?什么会导致dealloc不被调用?很少有可能是动画,代理?还有什么吗?如果未调用dealloc,则某些对象具有对视图控制器的强引用。您需要检查代码并寻找强引用周期 不要期望你的记忆会随着你按下视图

我对ARC下的内存管理有一些问题。当我在我的应用程序中打开viewcontroller时,它们都不会释放内存,有时也不会调用viewcontroller的dealloc。即使调用dealloc,内存也不会被释放。所以我想问的是,即使调用viewController的dealloc方法,内存也会消耗多少?什么会导致dealloc不被调用?很少有可能是动画,代理?还有什么吗?

如果未调用dealloc,则某些对象具有对视图控制器的强引用。您需要检查代码并寻找强引用周期


不要期望你的记忆会随着你按下视图时记忆的增加而减少。iOS会在内存中缓存很多东西以提高性能,比如图像、字符串文字等。只要确保你在对象上的时间不会超过你需要的时间

如果未调用dealloc,则某些对象具有对视图控制器的强引用。您需要检查代码并寻找强引用周期


不要期望你的记忆会随着你按下视图时记忆的增加而减少。iOS会在内存中缓存很多东西以提高性能,比如图像、字符串文字等。只要确保你在对象上的时间不会超过你需要的时间

Xcode 9为查找此类问题提供了一个很好的工具。它被称为:“”。 使用它,您可以按类类型找到泄漏的对象,并且可以清楚地看到谁持有对它的强引用,从那里释放它可以解决您的问题


Xcode 9为查找此类问题提供了一个很好的工具。它被称为:“”。 使用它,您可以按类类型找到泄漏的对象,并且可以清楚地看到谁持有对它的强引用,从那里释放它可以解决您的问题


谢谢!!所以,如果调用dealloc,是否意味着内存管理正常?我有一个viewController,它有一个AVCaptureSession对象,调用dealloc,但是在推送和弹出viewController 4-5次之后,内存是三倍,并且以后推送需要更长的时间。那怎么办?你知道吗,我还需要释放视图控制器中的其他对象?通常不需要释放视图控制器中的其他对象。由于只有视图控制器具有对这些对象的引用,因此在解除分配视图控制器后,它们将自动解除分配。
AVCaptureSession
在内存管理方面没有什么特别的不同。只需确保该视图控制器中没有相互指向的对象。如果您需要帮助查看它,我建议您专门发布一个关于该视图控制器的新问题,并包括其所有相关代码(或者,理想情况下,尝试在一个小样本项目中重现该问题)。我发现了问题,AVCaptureSession就是问题所在,我需要在第三方库中添加一个方法closeSession,在返回之前删除会话中的所有输入。谢谢。@TungVo如果答案对您有帮助,请使用我答案左侧的复选框图标将其标记为正确。这将阻止您的问题显示为未回答。谢谢!!所以,如果调用dealloc,是否意味着内存管理正常?我有一个viewController,它有一个AVCaptureSession对象,调用dealloc,但是在推送和弹出viewController 4-5次之后,内存是三倍,并且以后推送需要更长的时间。那怎么办?你知道吗,我还需要释放视图控制器中的其他对象?通常不需要释放视图控制器中的其他对象。由于只有视图控制器具有对这些对象的引用,因此在解除分配视图控制器后,它们将自动解除分配。
AVCaptureSession
在内存管理方面没有什么特别的不同。只需确保该视图控制器中没有相互指向的对象。如果您需要帮助查看它,我建议您专门发布一个关于该视图控制器的新问题,并包括其所有相关代码(或者,理想情况下,尝试在一个小样本项目中重现该问题)。我发现了问题,AVCaptureSession就是问题所在,我需要在第三方库中添加一个方法closeSession,在返回之前删除会话中的所有输入。谢谢。@TungVo如果答案对您有帮助,请使用我答案左侧的复选框图标将其标记为正确。这将阻止您的问题显示为未回答。