假设我有一个高级类,它实例化一个对象,然后将其传递给较低级别的类:
- (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>
将与 一起传递的a std::move
。然后将再次将其移入primaryDict
并添加一个弱引用,并在secondaryDict
.
我的问题是——告诉 Objective-C ARC 系统以这种方式管理我的引用的正确方法是什么?