关于项目开发的设计模式,MVC、MVVP...已有很多文章和大神做研究,不再班门弄斧。这里只是分享一点下自己在项目中遇到的问题和心得体会。
两个例子
1.看上图,点击用户的语音播放按钮,播放音频文件,然后开始滑动,滑动期间显示播放动画。解决方案,将Model添加BOOL属性进行标记,然后cell里面添加kvo监听,这样每个model就和相应的cell进行了绑定,在播放开始或停止的时候改变BOOL属性,然后kvo来改变view层的UI变化。
2.接着看上图,点击下载按钮,环型进度条的view显示下载进度,解决的时候方案类似,同样是给model添加progress属性,将下载类回传的float value 进度赋值,这是cell同样通过kvo来监听model得progress属性变化。
总结:以上是自己在项目中遇到的小问题,然后说一下自己的理解,一句话来概括就是view层的渲染需要依赖model层的属性来改变,特别是在这种cell复用机制中。
注意事项:由于kvo在使用结束需要移除观察者,而且因为cell是复用的,所以需要cell在赋值前先移除之前已经添加的观察者;曾经使用过RACObserve(target,path)方法,但是不知道怎样移除观察者,欢迎大神们指点,另外对这种ReactiveCocoa框架来说,觉得更应该关注的是它的实现机制。毕竟在Debug的时候发现,一个api里面要点30多个方法。