读书人

开源中国iOS客户端学习(3)再看协议

发布时间: 2012-12-24 10:43:13 作者: rapoo

开源中国iOS客户端学习——(三)再看协议与委托

iOS里委托与协议是很重要的一块,如果理解不好很难区分协议与委托到底有什么不一样,这些东西在开发中是经常遇见的;

协议是类留给外部的一个接口函数的集合(一位高手用C++基类来解释是,把接口做为参数,回调基类的函数时,运行时识别,调用了相应子类的成员函数);

委托是iOS一种设计模式,通过委托别的类,来调用协议里的方法,相当于一个回调过程;


使用理解委托与协议步骤:

(1) 弄清楚谁委托谁,需要干什么?

拿上一篇博客下拉刷新源码案例分析,(在源码工程中comment文件夹里)有MessageSystemView这样一个类,该类用于用户的信息所用(比如谁给你留言,或者评论了你某一篇博客),我们也需要刷新获取最新信息,此处用到下拉刷新第三方类库EGORefreshTableHeaderView类委托MessageSystemView类来实现这个特性,这就需要在EGORefreshTableHeaderView类定义一个协议对象delegate。

- (void)egoRefreshTableHeaderDidTriggerRefresh:(EGORefreshTableHeaderView *)view{ [self reloadTableViewDataSource]; [self refresh];}- (BOOL)egoRefreshTableHeaderDataSourceIsLoading:(EGORefreshTableHeaderView *)view{ return _reloading;}- (NSDate *)egoRefreshTableHeaderDataSourceLastUpdated:(EGORefreshTableHeaderView *)view{ return [NSDate date];}


当然要实现完整的下拉功能这几个委托只是其中一部分,被委托类里还需要有自己的成员函数,在委托方法正在被调用的时候触发被委托成员函数方法,在


MessageSystemView.h

  开源中国iOS客户端学习——(3)再看协议与委托  开源中国iOS客户端学习——(3)再看协议与委托


.h文件里


欢迎转载分享,请注明出处http://blog.csdn.net/duxinfeng2010


读书人网 >操作系统

热点推荐