2016-09-01 7 views
0

さて、私はSwiftのaddObserver関数に問題があります。 オブジェクトAの値を変更してオブジェクトBが反応すると、それはどのように可能ですか?ここで例えば(AがBを知っているが、BがAを参照して、変数を持っていなければ)iOS SwiftのObserver、Action Listener、KVO

:willChangeが変更

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 
    ... 
    } 
} 

ない場合にのみ、それは私が欲しいものはAで起こっただけであれば、notificatedする必要があります - > notificate B. オブザーバーパターンを考えますが、可能であればこれを説明することができます。

答えて

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 
 
    ... 
 
    } 
 
}

+0

動作しません...は、どのようなクラスBに存在するだけでなく言うが、それはありません。 – Lirf

+0

申し訳ありませんが、それは非常に良い作品!このようなことに良いパフォーマンスですか? – Lirf

+0

お役立ち情報パフォーマンスに影響を与えるべきではありません。あなたのユースケースでは、クラスAの「オブザーバー」が弱いことを覚えておいてください。 –

関連する問題