Вы спросили, есть ли разница между ними, Ответ - да, есть разница между ними:
Первый
говорит "я как представление", я добавляю наблюдателя с именем self (aka) viewControllerObject, если вы вызывали это в viewController.m всякий раз, когда мое свойство с именем "frame" изменяется.
Второй
Говорит "я как ViewController". Я добавляю себя как AsAnObserver всякий раз, когда изменяется ключ KeyPath с именем "view.frame".
Поскольку каждый наблюдатель должен реализовать
-(void)observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context
В этом случае вы не заметите большой разницы, потому что вы добавили viewController в качестве наблюдателя в любой из описанных выше методов, но это будет иметь значение, когда вы имеете дело с различными объектами. Но правило простое, каждый добавленный наблюдатель должен реализовать
-(void)observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context
Еще одна вещь:
Хорошая идея создать контекст для наблюдения
например,
//In MyViewController.m
//..
static int observingViewFrameContext
// In ...
[self addObserver:self
forKeyPath:@"view.frame"
options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld
context:&observingViewFrameContext];
// .. don' forget to remove an observer ! too