假设我有一个高级类,它实例化一个对象,然后将其传递给较低级别的类:
- (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 系统以这种方式管理我的引用的正确方法是什么?