一、项目的功能业务介绍:
《慕课网》是一款完全免费的、互联网IT技术学习平台,里面的课程内容专业,难度适中,覆盖面广。课程覆盖前端开发、PHP、Html5、Android、IOS、Swift等。无论是各阶段的开发人员都适合学习。
《慕课网》可以将你喜欢的课程添加收藏,下次想要看的时候可以直接在“我的课程”中直接观看,免去重复查询的繁琐。
《慕课网》还提供学习视频的笔记与讨论功能:可以将视频中要记录的一些问题保存下来,还可以针对一些问题发起讨论。
二、项目相应效果图:
1.整体界面之间的切换:
2.全部课程浏览:
3.课程查找:
4.课程视频的播放:
5.课程的笔记,讨论与详细信息:
6.在“我的课程”中快速查看我收藏的课程:
在此只展示了其中部分功能效果图。
三、项目中使用的技术点介绍:
1.整个项目使用了MVC的架构方式,创建了每个界面的model,view以及controller。
2.在界面的切换功能中使用了第三方框架MMDrawerController,实现左滑出现导航界面,通过点击导航界面的相应界面标题弹出对应窗口。
3.通过抓包工具获取原项目的数据接口,使用第三方框架AFNetworking请求数据。
4.项目中的图片加载使用第三方框架SDWebImage异步加载图片,防止进程阻塞导致降低用户体验。
5.项目中借鉴第三方框架EGORefreshTableHeaderView,封装了RefreshTableHeaderView,实现下拉刷新功能。通过抽象BaseTableView,添加上拉刷新功能。
6.使用第三方框架MCSwipeTableViewCell实现单元格滑动触发事件。
7.通过响应者链查找当前视图的父控制器进行数据传递,或者视图的切换。
8.项目中抽象了BaseNavigationController、BaseTableView、BaseViewController以及WXBaseModel,在项目中子类化使用避免了大量的重复代码。
9.项目中还封装了一些可以在项目中多次使用的model类,视图,控制器,以及视频播放界面。
四、总结:
1.在项目实现中遇到了一些问题:
*控制器之间切换时,有时会导致野指针报错。
错误原因:控制器中的对象在控制器销毁时没有释放。
解决方法:通过查找引发错误的代码段,将调用野指针的对象在控制器将要销毁的时候安全释放。
*点击单元格push控制器,在控制器返回后,相应单元格重新加载时会自动push控制器。
错误原因:单元格的复用,在复用时会刷新选中状态,导致将控制器push。
解决方法:在单元格点击事件后将单元格选中状态取消。
*项目中一些UITableViewCell类似,不想创建更多的cell类。
解决方法:在已经创建好的cell类中添加type属性,判断当前需要显示的类型,然后对相应的数据进行处理与显示,避免创建类似的cell类导致写很多重复的代码。
2.在项目实现过程中的学习:
*对项目实现中出现的错误修改,更好的对内存管理有了更深刻的理解,在使用一些属性前添加判断,避免
再次出现野指针调用的错误。
*在借鉴其它第三方框架自己封装框架时,提高了自己代码的阅读能力,以及源代码的修改能力。同时对第
三方框架的实现更好的理解了其实现的流程与方法。
3.项目完成后的心得体会:
对项目实现过程中认识到自己还有很多的不足,对出现的错误进行了深刻的反思,避免日后出现相同的错误
,在反思的过程中也让自己学到了更多,更加的完善自身。通过这一次的项目实现,对自己的代码阅读能力
,代码修改能力,代码编写能力有了很大的提升。同时也增强了自己独立开发项目的信心与动力。
4.给大家的建议:
多独自完成一些项目,可以使自己掌握的知识使用起来更熟练,实现过程中要细心,避免出现一些不该出现
的错误,遇到问题可以更多的查找官方文档、或者网上查找解决方案,搜索一些成功案例理解其实现原理、
或者跟其他程序员探讨解决问题。更多的理解一些第三方框架的实现原理及实现流程,丰富自己的知识储备
,加深对编程的理解。