Guidelines
Objective-C编码规范:26个方面解决iOS开发问题
iOS工程文件结构分物理结构和逻辑结构,建议逻辑结构和物理结构保持一致,以便方便有效地管理类文件。类文件组织要遵循以下两大原则:
基于MVC设计模式原则,至少要保证controller与数据处理,网络请求相对独立基于功能模块原则,功能模块分包括数据/网络处理,UI前端界面两部分,数据/网络处理应该在数据/网络处理的框架下,而UI前端界面比如用户中心,消息中心,它们的专有的controller,view等应该在属于文件夹。还会遇到一些公共的view,可以开辟出公共的文件夹来管理。
- 请多使用 #pragma mark - Mark Name 对方法进行分组 eg:
-
pragma mark - View lifeCycle
-
pragma mark - View lifeTerm
-
pragma mark - Init methods
-
pragma mark - Action methods
-
pragma mark - Common methods
-
pragma mark - UIActionSheetDelegate
-
pragma mark - UIImagePickerControllerDelegate
-
pragma mark - UITableViewDelegate Methods
-
pragma mark - UITableViewDataSource Methods
-
pragma mark - UIScrollViewDelegate Methods
-
pragma mark - UITextFieldDelegate Methods
-
pragma mark - UITextViewDelegate Methods
-
促进团队协作,提高代码的阅读性
增强代码的维护性,以及降低维护成本
规范代码,有助于代码审查
养成良好的习惯,有助于自身的成长
常量
使用const定义浮点型或者单个的整数型常量,如果要定义一组相关的整数常量,应该优先使用枚举。常量的命名规范和函数相同:
const float NSLightGray;
不要使用#define宏来定义常量,如果是整型常量,尽量使用枚举,浮点型常量,使用const定义。#define通常用来给编译器决定是否编译某块代码,比如常用的:
ifdef DEBUG
AppStore Rate
iOS应用跳转至app store 评分页(包括iOS7前后两种)
iOS开发中打开本地应用、打开appStore应用、给app评分功能实现
Summary
当程序员也蛮好的,薪资也还算靠谱,并且能够完成一个比较难的功能,自己也蛮有成就感。所以我慢慢的在潜意识中培养自己的兴趣,当你完全喜欢了iOS开发,你会忘记工作中的很多不爽的(加班算什么、产品设计有问题怎么了、服务端不配合怎么了、测试找茬怎么了、程序经常崩溃又怎么了),当你坚持下来就可以了,只要功能效果达到了自己的预期效果就ok了。当然这种兴趣是慢慢随着自身的成就感来的
GitHub
现在我经常逛GitHub,因为Code4App和CocoaChina上面的很多Demo都是从GitHub上面找的,你可以follow一些大牛,然后大牛每天都会star一些项目,会在首页展示的,这个时候你也可以进去看看大牛star的项目,虽然很猥琐,但是你能看到很多外面的代码。
CocoaChina
虽然CocoaChina上面很多代码都是从GitHub上面淘的,但是它展示出来的都是高质量的代码,并且也有很多的CocoaChina会员会在上面上传代码。你也可以到上面提问,看一下关于Apple方面的最新资讯。当然程序员的空闲时间总是有限的,我觉得只要每天坚持看CocoaChina首页的最中间的新闻已经上面的代码推荐,每天心里大概知道今天发生了什么事、有一些什么牛逼的代码就ok了。我个人喜欢CocoaChina里面的几个栏目,你们也可以试试:一周内容回顾、一周文章回顾、论坛源码推荐、开发资源汇总、每周精华、工具源码推荐。
objc、objccn中国。objccn是大牛猫神以及其他国内开发者维持的。
Cocoa控件。一个分享iOS、Mac控件的网站。
当然还有一些在逛大牛blog中,blog中有提出的国外网址。
http://www.raywenderlich.com/
http://www.cocoanetics.com/
http://www.bignerdranch.com/
http://oleb.net/blog/
http://ios-blog.co.uk/
https://maniacdev.com
2015年自己因为要准备结婚的事情,又在老家芜湖买了套房子,所以几乎是南京-芜湖-全椒(媳妇家)三地跑,所以几乎没多少难得的空闲时间写一些控件,唯一也就自己总结的一点jsonmodel 转换的心得体会,核心用到的是runtime技术,发布在了csdn上 runtime 字典解析转实体model,2016年一定要多练习,15年底萌发了一个想练习尝试写一个网络播放器,学习一下音频流技术。于是把百度,qq ,网易三家音乐接口API抓包对比了一下还是觉得网易的接口对我胃口(百度返回的xml,数据规则实在繁琐,果断弃用),一直觉得网易印象不错,网易新闻,网易云音乐这两款app都做的很不错,一度想跳槽去网易啊,可以一想媳妇在南京,哎,还是算了吧。。。跑题了,反正最后选择了用网易乐音乐的接口API,然后就是音乐播放的技术了,首先这里如果用avaudio技术,只能等整首mp3下载完以后才能播放,这种觉得太low 了,放弃,网上查了一下,这就要考虑音频流技术,看了github一位大神matt写的iOS音频流开源库AudioStreamer,可以实现在线播放,进度无缓冲及时播放。但是没有做播放缓存处理,功能比较单一,本来想自己改下添加缓存播放功能,后来发现好像是豆瓣团队写的一个网络音频播放DOUAudioStreamer写的很不错,过年后有时间一定要基于DOUAudioStreamer和purelayout写个APP出来。