In short, when the property value changing, I have to update some logic in my code, for example:
- (void)setProp:(NSString *)theProp
{
if (prop != theProp){
In your case the best option is to add the logic inside the setter. Your setter implementation is correct if your property declaration is something like
@property (nonatomic, copy) YCYourClass *prop;
KVO is used normally when checking for changes on external objects properties.
NSNotifications are better suited to inform of events.