比方說,我有一個實例化一個對象,然後將其傳遞到一個較低的水平一流的高層次類:Objective-C的ARC指針所有權VS C++
- (void) doSomeStuff {
MyBusinessObject* obj = [[MyBusinessObject alloc] init];
[obj setFoo:@"bar"];
[dataManager takeObj:obj withKey:@"abc" andKey:@"def"];
}
然後在takeObj
實施我想保持兩個不同的字典...
- (void) takeObj:(MyBusinessObject*)obj withKey:(NSString*)key1 andKey:(NSString*)key2 {
[primaryDict setObject:obj forKey:key1];
[secondaryDict setObject:obj forKey:key2];
}
現在,我要的是爲obj
所有權被傳遞到我的數據經理和有primaryDict
持有強引用和secondaryDict
保持弱引用。這是我會怎麼做它在C++:
map<string, unique_ptr<MyBusinessObject>> primaryDict;
map<string, MyBusinessObject*> secondaryDict;
的takeObj
功能將接受一個unique_ptr<MyBusinessObject>
將與std::move
向下傳遞。然後再將其移入primaryDict
,並在secondaryDict
中添加一個較弱的引用,並使用原始指針。
我的問題是 - 告訴Objective-C ARC系統以這種方式管理我的引用的正確方法是什麼?