Использование -setValue: forKey: vs "object.var = ..." - PullRequest
2 голосов
/ 26 ноября 2009

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

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

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

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

1 Ответ

3 голосов
/ 27 ноября 2009

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

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

...