[英]iOS, shared_ptr lifecycle in objective-c code?
我使用MonkSVG库,该库使用boost::shared_ptr
类型(据我了解, std::shared_ptr
以相同的方式工作)。
据我了解,我不需要自己释放内存。
我使用库示例中的代码创建了一个单独的UIViewController
,该示例定义了shared_ptr变量并推送/弹出该视图控制器。 但是内存似乎有问题,或者该变量无法按照我的方式工作。 问题出在shared_ptr
对象的析构函数中:
我认为,每次我用它弹出视图控制器时,都必须调用shared_ptr
对象的析构函数。 但是,当我仅将此变量分配给另一个实例时,它将被调用。 它看起来像以下内容:
推/弹出| shared_ptr | 普通对象
推| -| -
流行 -| 析构函数
推| 析构函数| -
流行 -| 析构函数
等等
它是正常行为吗?
弹出(我假设您的意思是在UINavigationController
), UIViewController
不一定会取消分配它(您可以重写其dealloc
方法进行检查)。 只要您对其有很强的引用, UIViewController
实例就会保持活动状态。
但是,当您重新分配UIViewController
变量时,您将失去对旧实例的强引用(如果使用ARC),这将导致该旧实例被释放,从而销毁任何shared_ptr
实例变量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.