我使用NSMapTable
感到困惑。
我NSMapTable
与NSPointerFunctionsWeakMemory
:
_controllersTable = [[NSMapTable alloc] initWithKeyOptions:NSPointerFunctionsWeakMemory|NSPointerFunctionsObjectPointerPersonality
valueOptions:NSPointerFunctionsWeakMemory|NSPointerFunctionsObjectPointerPersonality
capacity:0];
假设我创建UIViewController
并将其添加到MapTable:
MyVC *myVC = [[MyVC alloc] init];
[self.controllersTable setObject:@1 forKey:controller]
MyVC.m
- (void)dealloc {
// [[[controllersTable keyEnumerator] allObjects] count]] == 0
}
因此,当MyVC调用dealloc时,没有该VC的条目。在这种情况下,有没有办法从NSMapTable
获得价值?
PS
我无法使用NSPointerFunctionsStrongMemory
来存储密钥,因为它可以引入保留周期。