Swift의 싱글 톤 속성에서 KVC를 사용할 수 있는지에 대한 내 질문이 생겼습니다. 한 클래스에서 KVC를 테스트 중이 었는데 작동시킬 수 있었지만 그것이 Singleton 클래스에서 작동하는지 확인하기로 결정했습니다.
내 싱글 톤의 "공유"속성이 KVC와 호환되지 않는다는 오류가 나타납니다.싱글 톤 패턴이있는 KVC 사용
class KVOObject: NSObject {
@objc static let shared = KVOObject()
private override init(){}
@objc dynamic var fontSize = 18
}
override func viewDidLoad() {
super.viewDidLoad()
addObserver(self, forKeyPath: #keyPath(KVOObject.shared.fontSize), options: [.old, .new], context: nil)
}
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
if keyPath == #keyPath(KVOObject.shared.fontSize) {
// do something
}
}
나는 현재 아래의 오류를 얻고있다 : 인해 캐치되지 않는 예외 'NSUnknownKeyException'응용 프로그램 종료, 이유는 *** :
NetworkCollectionTest [452848 9714] : '[addObserver : forKeyPath : 공유 "@합니다. fontSize "options : 3 context : 0x0]"공유 "속성에 대해 KVC와 호환되지 않는 객체로 전송되었습니다. '
키 경로는 '#keyPath (KVOObject.fontSize)'입니까? – Rob
'#keyPath (KVOObject.fontSize)'를 사용하면 작동하지만 'KVOObject.shared.fontSize' 속성을 변경하면 관찰되지 않습니다. – victorydub
그건 작동합니다! 감사 – victorydub