Вопрос

Разница между этими двумя строками кода заключается в том, что вторая соответствует KVO, а первая - нет?

[person setValue:tempPerson.name forKey:@"name"];
person.name = tempPerson.name;

Причина, по которой я спрашиваю, состоит в том, что мне нужно обновить 60 атрибутов для более чем 500 объектов, и я не хочу, чтобы уведомления KVO содержали более нескольких атрибутов.

Я использую NSFecthedResultsController для своего UITableView и не хочу вызывать чрезмерное setNeedDisplay для ячеек.

Это было полезно?

Решение

Нет разницы между двумя строками в том, что касается наблюдения значения ключа. Оба запускают уведомления KVO по умолчанию. Вы можете изменить это поведение. Из руководства по программированию KVO от Apple:

  

Вы можете управлять автоматическими уведомлениями наблюдателя о свойствах вашего подкласса, реализовав метод класса automaticNotifiesObserversForKey: . Подклассы могут проверять ключ, переданный в качестве параметра, и возвращать YES, если автоматическое уведомление должно быть включено, NO, если оно должно быть отключено.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top