我想做个小游戏,用MVC模式M和C通过kvo联系起来,M改变,V得到通知
我有点不明白的是,V改变,M得到通知,更新M,M被修改了,然后不就反过来通知C去更新V吗?这不就变成循环了吗

解决方案 »

  1.   

    1. view由button触发后通过IBOutlet在view controller调用对应的action
    2. 在action中获取some label.text修改model
    3. model修改后经由kvo更新UI,这里的UI不包括触发源换句话说,触发的view controller完全没有必要observe model,只是外部关联的view controller得到model变化的事项,所以一般都会在kvo中加一个source,如果self == source直接return掉,表示你自己已经处理过了。
      

  2.   

    1. Button click 通知C去更新M中的labeltext
    2. labeltext改变通过kvo通知C去更新label的UI你说的判断source == self是在哪一步做?
    还有这里的self是指哪个对象?小弟是OC新人,求赐教
      

  3.   

    MVC是模式,这是相对于整个工程的架构来说的,不是一个对象、一个key的关系问题;
    KVO是技术,说白了就是添加一个observer而已,这个观察者就是观察他所监视的key的值value是否改变,改变了你该做什么操作就做什么操作,把他看成MVC模式是概念模糊的问题;