У меня недостаточно репутации, чтобы комментировать или голосовать против, но я бы проголосовал против Дэннивартнаби. NSOperation использует KVO по своей природе в своей работе; необходимость реализации isFinished и isExecuted как часть обработки, например, составляет 100% КВО и является частью требуемого контракта операции с клиентом / очередью. Поэтому советовать, что их следует избегать, неточно; NSOperation использует само KVO, поэтому принятие предпосылки dannywartnaby будет означать, что реализация NSOperation сама по себе несовершенна, что, безусловно, не так.
По общему признанию, разработчик должен позаботиться о том, чтобы правильно использовать KVO, хотя я бы сказал, что создание подклассов NSOperation - нетривиальная задача, вероятно, оставленная для более опытного программиста Objective-C. Можно было бы возразить, что уведомления слишком грубы для той работы, которую выполняет операция, хотя и не всегда, я думаю, что мы должны быть осторожны при консультировании по методам, чтобы гарантировать, что неправильное сообщение не будет передано в качестве наилучшей практики. Дэнни, не могли бы вы пояснить, почему не рекомендуется использовать KVO при использовании NSOperation или потоков? множество примеров реализации NSOperation используют KVO ...