startDateとendDateを持つ(カレンダー)イベントを変更できるようにしたい。期間もあります。
- ユーザーがendDateを変更すると、期間が更新されます。
- ユーザーがstartDateを変更すると、期間に応じてendDateが変更されます。
- ユーザーが期間を変更すると、endDateが変更されます。
この最後のアクションは最初のアクションをトリガーし、3番目のアクションをトリガーし、最初のアクションを無限に(またはスタックがいっぱいになったときに)トリガーします。
次のような行は、値を変更するために、このループを引き起こします。
[self setValue:[NSNumber numberWithLong:(interval%60)] forKeyPath:@"durationMinutes"];
[self setValue:ed forKeyPath:@"endDate"];
単に監視を停止し、変更後に再開することは、GUIの値が更新されないため、魅力的ではありません。したがって、問題は、相互に依存する2つのプロパティのいずれかを安全に(そしてエレガントに)更新するにはどうすればよいかということです。