這更好地理解了我以前的問題。Objective-C++中的boost :: shared_ptr
我有以下的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。然後我通過以下方式創建了一個名爲「troublebling line」的shared_ptr:
MyCppobj * cpp = [occ cppobj];
bsp = boost::shared_ptr<MyCppobj>(cpp);
它第一次正常工作。然後我銷燬NOBJ並重新創建它。當我爲cppobj時,它消失了。據推測shared_ptr認爲它不再需要,並取消了它。
所以我需要幫助。我怎樣才能讓cppobj活着?
有沒有辦法在不破壞cppobj的情況下銷燬bsp(或者cppobj的引用)?
你沒有從init方法返回任何東西。 通常您返回'self',返回類型爲'id'。 我想這也適用於ObjC++。 – MKroehnert 2010-04-26 22:30:40