NSDockTile не имеет никаких привязок, поэтому вашему контроллеру придется обновлять плитку док-станции вручную. Вы можете сделать это, используя KVO, который будет иметь тот же эффект, что и его привязка.
Создать контекст как глобальный:
static void* MyContext=(void*)@"MyContext";
Затем, в вашем методе init:
[objectYouWantToWatch addObserver:self forKeyPath:@"dockTileNumber" options:0 context:MyContext];
Затем необходимо реализовать этот метод, чтобы получать уведомления об изменениях в пути к ключу:
- (void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
if (context == MyContext) {
[[NSApp dockTile] setBadgeLabel:[object valueForKeyPath:keyPath]];
}
else {
[super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
}
}
Убедитесь, что вы удаляете наблюдателя, когда объект контроллера исчезает.