我有一个属性
@property (strong, nonatomic) NSArray *techniqueSetObjects;
它在+initialize
+ (void)initialize {
[self exposeBinding:@"techniqueSetObjects"];
}
在app delegate的applicationDidFinishLaunching:
中,它会绑定到NSArrayController.arrangedObjects
[self.futureBoxesController bind:@"techniqueSetObjects" toObject:self.techqSetController withKeyPath:@"arrangedObjects" options:nil];
有问题的阵列控制器在Core Data Entity模式下运行,它从另一个阵列控制器selection
获取内容(路径指向主实体中的关系)。
然后我有techniqueSetObjects
属性的自定义setter:
- (void)setTechniqueSetObjects:(NSArray *)newTechqSetObjects {
[self willChangeValueForKey:@"techniqueSetObjects"];
techniqueSetObjects = [newTechqSetObjects copy];
[self didChangeValueForKey:@"techniqueSetObjects"];
NSLog(@"New count: %ld", [techniqueSetObjects count]);
}
大多数情况下,一切都按预期工作,在应用程序启动后,我会看到以下日志行:
New count: 0
New count: 2
但偶尔(没有明显原因)setter会使用相同的新数组调用3次,如下所示:
New count: 0
New count: 2
New count: 2
New count: 2
不是说这会导致重大的性能损失或其他事情,只是让我感到恼火,我不知道到底发生了什么。这是绑定的正常行为吗?我怀疑这可能是我还不知道的其他一些更严重问题的早期症状。