繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM