Использование -setValue:forKey: vs "object.var = ..."
Разница между этими двумя строками кода в том, что вторая совместима с KVO, а первая нет?
[person setValue:tempPerson.name forKey:@"name"];
person.name = tempPerson.name;
Причина, по которой я спрашиваю, заключается в том, что мне нужно обновить 60 атрибутов на более чем 500 объектах, и я не хочу, чтобы уведомления KVO содержали более нескольких атрибутов.
Я использую NSFecthedResultsController для своего UITableView, и я не хочу вызывать чрезмерное setNeedDisplay на ячейках.
1 ответ
Нет никакой разницы между двумя строками в том, что касается наблюдения значения ключа. Оба запускают уведомления KVO по умолчанию. Вы можете изменить это поведение. Из Apple's KVO Руководство по программированию:
Вы можете контролировать автоматические уведомления наблюдателя для свойств вашего подкласса, реализуя метод класса
automaticallyNotifiesObserversForKey:
, Подклассы могут проверять ключ, переданный в качестве параметра, и возвращать YES, если автоматическое уведомление должно быть включено, NO, если оно должно быть отключено.