2016-09-01 7 views
0

좋아요, 스위프트의 addObserver 기능에 문제가 있습니다. 오브젝트 A의 값을 변경하면 오브젝트 B가 반응하면서 어떻게 가능합니까? (A는 B를 알고 있지만, B는에 대한 참조 변수가 없으면) 여기 예를 들어Observer, Action Listener, iOS 내 KVO Swift

: willChange 그것이 notificated해야 변경 한 경우 아무것도 나는 일어난 원하는 단지 경우뿐만 아니라

class A { 
var willChange: Int = 0 

// if something happened -> willChange = 1 
} 

class B { 
    let someThing = A() 

    //Something like this maybe but i don't really want to check, just get a notice 
    if someThing.willChange != 0 { 
    } 

    func whatEver() { 
    //called if willChange is changed 
    ... 
    } 
} 

을 -> notifications B. 옵저버 패턴을 생각해보십시오.하지만 가능하면 누군가가 설명 할 수 있습니다. 이 같은

답변

0

뭔가 :

+0

class A { weak var observer : AnyObject? var willChange: Int = 0{ didSet{ if let bObject = observer as? B{ bObject.whatEver() } } } } class B { let someThing = A() someThing.observer = self func whatEver() { //called if willChange is changed ... } }
이 .. 작동하지 않습니다는뿐만 아니라 클래스 B에 존재하는 어떤 것을 말한다, 그러나 그것은 않습니다. – Lirf

+0

죄송합니다, 아주 좋은 작품! 이런 일에 좋은 성능입니까? – Lirf

+0

잘 알고 있습니다. 성능에 영향을주지 않아야합니다. 유스 케이스의 경우 클래스 A의 "관찰자"가 약할 필요가 있다는 것을 기억하십시오. –