属性值更改的iPhone自定义事件

属性值更改的iPhone自定义事件,iphone,ios4,ios5,Iphone,Ios4,Ios5,是否可以为属性值更改添加自定义事件?。我需要在属性值更改时触发一个事件 当然。比如说 在.h文件中 NSString*myString 在.m文件中 - (NSString *)myString { //Custom event return myString; } 这将创建一个可以用作self的属性myString。myString您可以使用KVO(键值观察)或定义自己的setter方法并在其中写入自定义事件?通常,KVO用于观察属性值中的更改 我假设当另一个对象(“被观

是否可以为属性值更改添加自定义事件?。我需要在属性值更改时触发一个事件

当然。比如说

在.h文件中

NSString*myString

在.m文件中

- (NSString *)myString {
    //Custom event
    return myString;
}
这将创建一个可以用作self的属性myString。myString

您可以使用KVO(键值观察)或定义自己的setter方法并在其中写入自定义事件?通常,KVO用于观察属性值中的更改


我假设当另一个对象(“被观察对象”)中的属性发生更改时,您希望在一个对象(称为“观察者”)中触发一个事件

您可以通过两种方式执行此操作:

  • 使用notification center,您可以通过使用NSNotificationCenter“postNotification:”方法发布通知来覆盖setter,然后所有感兴趣的观察者都将收到通知,前提是他们自己注册了此类通知

  • 使用KVO(Key-Value-Observing),必须向具有该属性的实例显式注册观察者;e、 g.如果self希望注册到“instanceToObserve”属性“myProperty”:

  • 然后在“自我”的课堂上实现“观察”功能:

    
    - (void)observeValueForKeyPath:(NSString *)keyPath
                          ofObject:(id)object
                            change:(NSDictionary *)change
                           context:(void *)context {
    // your implementation goes here
    }
    

    如何使用这两种工具取决于您。考虑到如果遵循基本的COCOA约定规则,KVO将被自动支持,因此不需要额外的努力,并且不需要对合成的SETER进行更改。我不是指setter的自定义实现。我需要在调用setter方法时触发另一个自定义事件。无需对setter方法进行任何更改。Manali建议可以工作,您可以重新实现setter,并在setter内部添加send a message([NSNotificationCenter defaultCenter]postNotificationName)。您可以使用KVO(键值观察)或为setter定义自己的方法,并在其中写入自定义事件?通常,KVO用于观察属性值的变化。我知道自定义设置程序。但是如何实现KVO呢?。
    
    - (void)observeValueForKeyPath:(NSString *)keyPath
                          ofObject:(id)object
                            change:(NSDictionary *)change
                           context:(void *)context {
    // your implementation goes here
    }