Установщик для свойства, связанного с NSOrayRontroller's selectedObjects, вызывается несколько раз - PullRequest
0 голосов
/ 17 марта 2012

У меня есть собственность

@property (strong, nonatomic) NSArray *techniqueSetObjects;

Отображается как пользовательская привязка в +initialize

+ (void)initialize {
    [self exposeBinding:@"techniqueSetObjects"];
}

В делегате приложения applicationDidFinishLaunching: он привязывается к NSArrayController.arrangedObjects

[self.futureBoxesController bind:@"techniqueSetObjects" toObject:self.techqSetController withKeyPath:@"arrangedObjects" options:nil];

Контроллер массива, о котором идет речь, работает в режиме Core Data Entity, он получает свое содержимое от selection другого контроллера массива (с путем, указывающим на связь в главной сущности).

Тогда у меня есть пользовательский установщик для свойства techniqueSetObjects:

- (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

Но иногда (без видимой причины) сеттер вызывается 3 раза с одним и тем же новым массивом, например так:

New count: 0
New count: 2
New count: 2
New count: 2

Не сказать, что это приводит к значительному снижению производительности или что-то в этом роде, просто меня раздражает, что я не знаю, что именно происходит. Это нормальное поведение для привязок? Я подозреваю, что это может быть ранним признаком какой-то другой более серьезной проблемы, о которой я пока не знаю.

...