c++ - iOS,objective-c 代码中的 shared_ptr 生命周期?

标签 c++ ios objective-c uiviewcontroller push

我使用 MonkSVG 库,它使用 boost::shared_ptr 类型(据我所知,std::shared_ptr 的工作方式相同)。

据我所知,我不需要自己释放内存。

我使用库示例中的代码创建了一个单独的 UIViewController,该示例定义了 shared_ptr 变量并推送/弹出此 View Controller 。但似乎内存有问题,或者这个变量没有按照我认为的方式工作。问题出在 shared_ptr 对象的析构函数中:

我认为每次弹出 View Controller 时都必须调用 shared_ptr 对象的析构函数。但是当我只为这个变量分配另一个实例时它被调用。它看起来像下面这样:

推/弹出 | shared_ptr |平常的对象

推 | - | -

流行 | - |析构函数

推 |析构函数 | -

流行 | - |析构函数

等等

这是它的正常行为吗?

最佳答案

弹出(我假设你的意思是在 UINavigationController 中)UIViewController 不一定会释放它(你可以覆盖它的 dealloc 方法来检查那)。只要您保持对它的强引用,UIViewController 实例就会保持事件状态。

然而,当您重新分配您的 UIViewController 变量时,您将失去对旧实例的强引用(如果您使用 ARC),这会导致它被释放,然后销毁任何 shared_ptr 实例变量。

关于c++ - iOS,objective-c 代码中的 shared_ptr 生命周期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19707039/

相关文章:

ios - Facebook SDK 以编程方式删除应用程序权限

iphone - Objective C ivars 或 @property

iphone - 具有透明背景的 UIControl

objective-c - 观察 NSMutableSet 的键值对

c++ - 管理 Qt 中的右键和左键单击

c++ - 类成员函数的基于范围的for循环?

c++ - 计算搜索比较 C++

c++ - C++ 模板可以推断返回类型吗?

ios - ScrollView 仅显示最后添加的 subview

iphone - 如何让 iPhone 屏幕变暗