Где находится заголовок, который определяет метод publisher (for:), который выдает KeyValueObservingPublisher? - PullRequest
0 голосов
/ 24 февраля 2020

Я вижу заголовок Foundation, который определяет NSObject.KeyValueObservingPublisher. Но я не могу найти заголовок, который определяет метод publish(for:), который возвращает этого издателя. И я не могу найти это в документации.

Это должно включать NSObject, потому что только KSObject можно наблюдать с KVO. И это должно прийти в формах publisher(for:) и publisher(for:options:), потому что это то, что завершение кода предлагает мне в Xcode. Но , где - завершение кода, получающее эту информацию из?

1 Ответ

1 голос
/ 24 февраля 2020

Его нет в документации и он не виден в 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.

...