如何强制更新Cocoa绑定?

adi*_*dib 5 macos cocoa objective-c cocoa-bindings

我正在使用Cocoa绑定(如在Mac上的Objective-C中)使用值转换器显示相对日期值.也就是说,我的NSValueTransformer子类将NSDate实例转换NSString为显示相对日期,如"3秒前","2分钟前"等.

如您所见,这些显示的值随着时间的推移而过时,因此需要以某种方式刷新.我知道我需要使用计时器,然后强制更新绑定,以便重新执行值转换器并显示正确的相对日期.

但问题是,如何使这些绑定刷新其值?

gai*_*ige 5

如果您正在使用绑定,那么GUI应该只要您更新:

  • 正在更新主线程上的值(因此绑定可以在GUI时更新)
  • 正在使用setter来更新值

因此,如果您已将值绑定到对象的foo.zot属性,则需要确保调用[foo setZot: @"new value"]主线程(或使用设置属性foo.zot=@"new value").