这是对我之前提出的一个问题的更好理解。
我有以下 Objective-C++ 对象
@interface OCPP
{
MyCppobj * cppobj;
}
@end
@implementation OCPP
-(OCPP *) init
{
cppobj = new MyCppobj;
}
@end
然后我创建了一个完全不同的 obj,它需要在 boost::shared_ptr 中使用 cppobj (在这件事上我别无选择,它是我无法更改的巨大库的一部分)
@interface NOBJ
-(void) use_cppobj_as_shared_ptr
{
//get an OCPP obj called occ from somewhere..
//troubling line here
}
@end
我尝试了以下方法但失败了:我尝试合成 cppobj。然后我通过以下方式在“麻烦行”中创建了一个 shared_ptr:
MyCppobj * cpp = [occ cppobj];
bsp = boost::shared_ptr<MyCppobj>(cpp);
它第一次运行良好。然后我销毁 NOBJ 并重新创建它。当我为 cppobj 它消失了。大概 shared_ptr 决定不再需要它并取消了它。
所以我需要帮助。我怎样才能让 cppobj 活着?
有没有办法在不破坏 cppobj 的情况下破坏 bsp(或者它是对 cppobj 的引用)?