代码之家  ›  专栏  ›  技术社区  ›  matt

其中是定义生成KeyValueObservingPublisher的“publisher(for:)”方法的标头?

  •  0
  • matt  · 技术社区  · 4 年前

    我可以看到定义 NSObject.KeyValueObservingPublisher . 但我找不到定义 publish(for:)

    它必须包含NSObject,因为KVO只能观察到NSObject。它必须以某种形式出现 publisher(for:) publisher(for:options:) ,因为这是代码完成在Xcode中提供给我的。但是 代码完成是否得到了这些信息 从哪里来的?

    1 回复  |  直到 4 年前
        1
  •  1
  •   matt    4 年前

    它不在文档中,跳转到标题时在Xcode中不可见。然而,我发现它藏在一个 .swiftinterface Xcode中的文件:

    @available(OSX 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *)
    extension _KeyValueCodingAndObservingPublishing where Self : ObjectiveC.NSObject {
        public func publisher<Value>(for keyPath: Swift.KeyPath<Self, Value>, options: Foundation.NSKeyValueObservingOptions = [.initial, .new]) -> ObjectiveC.NSObject.KeyValueObservingPublisher<Self, Value>
    }
    

    我认为这里的问题是这个方法是在一个协议的扩展中声明的 _KeyValueCodingAndObservingPublishing

    编辑 https://github.com/apple/swift/blob/master/stdlib/public/Darwin/Foundation/Publishers%2BKeyValueObserving.swift .