これは、私が以前に持っていた質問をよりよく理解しています。
次のObjective-C++オブジェクトがあります
@interface OCPP
{
MyCppobj * cppobj;
}
@end
@implementation OCPP
-(OCPP *) init
{
cppobj = new MyCppobj;
}
@end
次に、boost::shared_ptr で cppobj を使用する必要がある完全に異なる obj を作成します (この問題には選択の余地がありません。変更できない巨大なライブラリの一部です)。
@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 への参照) を破棄する方法はありますか?