Има ли някакво предимство да се използва KVO вместо по-"общата" (и според мен по-стабилна) функция на NSNotification
s?
KVO срещу NSNotifications
Отговори (2)
Мразя KVO със страст, главно защото ме принуждава да насочвам всички KVO известия през един манипулатор. Използвам всичко останало, ако имам избор. Но KVO има ясното предимство да бъде достъпен за много от класовете в стандартната библиотека – ако искате да наблюдавате промените в свойствата на някои класове от стандартната библиотека, KVO може да е единствената ви опция. Има една много интересна тема за Cocoa Builder за KVO и различни опции за наблюдение и обвързване.
(Трябва да добавя, че имам недоволства само от KVO като интерфейс за наблюдение на високо ниво. Мисля, че е много добър като водопровод за други технологии, особено за свързване.)
За да използвате NSNotifications, за да направите нещо подобно на KVO, ще трябва да напишете персонализирани шаблонни методи за достъп за всяко свойство, което искате да наблюдавате.
Това е едновременно много по-малко "генерично" и много по-малко стабилно от използването на KVO.
removeObserver:forKeyPath:
, което не приема никакъв контекст? Какво ще стане, ако и моят клас, и неговият подклас искат да наблюдават един и същ път и спрат да наблюдават в различни моменти? - person zoul   schedule 05.05.2011viewDidUnload
вече не се извиква. Така че сега можем да започнем да наблюдаваме вviewDidLoad
и да завършим наблюдението вdeinit
, като знаем, че извикванията към всеки метод са едно към едно. - person ma11hew28   schedule 12.11.2014