• 精通Objective-C编程,思路清晰、对项目有比较好的把控能力;对代码有偏执的追求,具有良好的编码风格,技术攻关能力强;
• 合理的安排项目进度,管理项目bug,收集用户在app使用期间出现的崩溃日志;
• 熟练掌握app上线流程,能够有效的规避被拒,预留加速审核通道;
• 熟练使用MVVM设计模式,降低项目的耦合性,提高程序的可重用性;
• 熟练使用面向协议编程,实现类之间的数据的传递和通讯,提高应用程序的健壮性;
• 研究AFNetworking,Alamofire原理,并基于这两个框架分别封装网络框架,将应用程序和第三方框架隔离开;
• 基于NSURLConnection和自定义NSOperation封装下载工具类,支持断点续传以及进度的检测;
• 熟练掌握XML、DOM解析服务器返回的二进制数据;
• 熟悉密码学,掌握MD5、Base64、对称性(ECB、CBC、AES)和非对称性加密算法
• 熟练HTTP、TCP/UDP等网络协议;
• 阅读YYImage源码,基于YYImage实现的原理,封装网络图片下载工具类;
• 熟练掌握GCD、NSOperation等多线程编程;
• 熟练掌握运行循环,必要时通过在子线程开启运行循环,减轻主线程负担,实现程序运行的流畅性;
• 熟练掌握SQLite数据库,并封装一套数据访问工具类;
• 熟练掌握FMDB的使用,通过FMDB实现应用程序的数据缓存;
• 熟悉运行时,通过运行时实现对模型的动态传参,为类扩展成员变量;
• 熟练使用代理、单例、mvc设计模式,熟练掌握KVC、KVO、通知、block等核心机制;
• 熟练掌握SVProgressHUD,SnapKit等三方框架;
• 熟练掌握静态库、地图定位、友盟、极光推送等,能快速学习掌握第三方API;
• 熟练掌握git源代码管理工具、以及CocoaPods类库管理工具;
• 熟练掌握colletionView的使用(collectionView的上下联动,图片轮播器,瀑布流的UI效果);
• 熟练掌握图文混排,追求良好的界面风格;
• 熟练使用storyboard、xib、纯代码开发;
项目一
项目名称:甩单宝
项目描述:
这是一款金融类app,客户端为信贷员提供在线甩单,即时通信功能。
功能描述:
1、首页:城市选择,轮播器,自定义tableView,collectionView,活动分享功能;
2、圈子:即时聊天,动态,添加好友;
3、甩单:和h5交互;
4、客户:scrollView的上下级联动,展示客户甩单和存储客户未甩的单;
5、我:头像选择,认证状态,照片浏览,个人信息展示
个人职责:
1、项目的整体的框架搭建,框架的集成;
2、代码规范的制定;
3、代码优化,性能优化;
4、用户使用期间,崩溃收集;
5、任务分配,安排进度,项目的bug管理;
6、负责appStore的上线,规避app被拒,预留加速审核通道。
技术要点:
1、搭建BugClose对项目的bug进行管理,任务分配;
2、搭建Bugly收集用户使用期间崩溃信息;
3、基于继承实现类的扩展,实现代码的复用;
4、依照mvvm设计模式搭建框架;
5、自定义AFN网络工具实现数据加载,使用YYImage加载图片(减少使用SDWebImage带来额外的性能开销),使用SVProgressHUD提示用户加载数据;
6、基于instrument排查内测泄漏,循环引用,电量检测,对象创建提升应用性能;
7、基于时间戳对密码进行加密,对敏感字段使用CBC加密;
8、集成环信实现即时通信;
9、基于友盟实现QQ,微信分享功能;
10、使用代理,kvo(监听frame),block(传递参数实现数据传递,成功失败回调,代码块的执行),通知(多层次嵌套,多对多的数据传递)实现数据的传递;
11、自定义UIRefresh实现上拉和下拉刷新;
12、使用极光推送实现消息的推送;
13、使用核心绘图对视图进行异步渲染,避免重复切换图片带来的额外性能的开销;
14、封装图片压缩工具类,避免图片上传带来额外性能开销;
15、使用归档解档实现用户数据的缓存;
16、基于ScrollView封装工具类,实现项目中上下级联动;
17、Objective-C和h5的交互;
18、基于CollectionView和NSTimer实现无限轮播器工具类的封装;
项目二 UM
项目描述
“UM”是一款帮助管理个人智能手机重要资料和数字化资产的安全硬件,
通过自带WiFi模块随时随地,安全高效地管理手机中的重要资料。
主要责任
根据产品要求对项目进行整体构架,负责手机通过socket和硬件建立链接
和登录、记事本模块,以及程序后期新功能的开发和相应维护工作。
核心技术
1. 基于GCDAsyncSocket封装Socket工具类实现和硬件的通信;
2. 基于继承,实现基类的封装和类的扩展,提高代码的可复用性;
3. 使用代理,block(作为参数实现数据传递,成功失败回调,代码块的执行),通知
(多层次嵌套,多对多的数据传递)等方式实现数据传递;
4. 使用block封装网络请求工具类,提高项目的可扩展性;
5. 封装图片压缩工具类,避免图片上传带来额外的性能开销;
6.封装本地文件和硬件文件的工具类,实现删除、新建、重命名、移动等功能;
7. 自定义UITableView,UICollectionView,UITableVewlCell等视图控件,提
高代码的可扩展性和新功能添加的便利性。