“hidden” vs #keyPath(UIView.isHidden)

前端 未结 1 784
忘了有多久
忘了有多久 2020-12-15 12:21

KVO observer with #keyPath(UIView.isHidden) does not work, but \"hidden\" works.

Very strange. Is it bug or feature?

相关标签:
1条回答
  • 2020-12-15 12:58

    Is it bug or feature?

    Let's say it's a known fact. "Renamification" means that Swift pretends that the name of an Objective-C Bool property starts with is... even when it doesn't. But the #keyPath mechanism didn't get the memo when it comes to KVO and property setter names, and property setter swizzling to implement KVO observing is purely an Objective-C feature, so you have to use the real name of the property / setter, i.e. the Objective-C name, so that communication with Objective-C works correctly for KVO observation purposes.

    I've filed a bug report on it (https://bugs.swift.org/browse/SR-2415) on the grounds that Swift could behave a little smarter about this, but until the Swift gang respond, it's just something you have know and deal with.

    0 讨论(0)
提交回复
热议问题