提升自身的iOS编程水平 (转载)
阅读博客
在现在这个碎片化阅读流行的年代,博客的风头早已被微博盖过。而我却坚持写作博客,并且大量地阅读同行的iOS开发博客。博客的文章长度通常在3000字左右,许多iOS开发知识都至少需要这样的篇幅才能完整地讲解清楚。并且博客相对于书籍来说,并没有较长的出版发行时间,所以阅读博客对于获取最新的iOS开发知识有着非常良好的效果。
我自己精心整理了国内40多位iOS开发博主的博客地址列表:https://github.com/tangqiaoboy/iOSBlogCN,希望大家都能培养起阅读博客的习惯。
国外也有很多优秀的iOS开发博客,他们整体质量比中文的博客更高,以下是一些推荐的博客地址列表:
博客名 博客地址
objc.io http://www.objc.io/
Ray Wenderlich http://www.raywenderlich.com
iOS Developer Tips http://iosdevelopertips.com/
iOS Dev Weekly http://iosdevweekly.com/
NSHipster http://nshipster.com/
Bartosz Ciechanowski http://ciechanowski.me
Big Nerd Ranch Blog http://blog.bignerdranch.com
Nils Hayat http://nilsou.com/
另外,使用博客RSS聚合工具(例如Feedly:http://www.feedly.com/)可以获得更好的博客阅读体验。手机上也有很多优秀的博客阅读工具(我使用的是Newsify)。合理地使用这些工具也可以将你在地铁上、睡觉前等碎片时间充分利用上。
读书
博客的内容通常只能详细讲解一个知识点,而书籍则能成体系地介绍整个知识树。相比国外,中国的书籍售价相当便宜,所以这其实是一个非常划算的提高的方式。建议大家每年至少坚持读完1本高质量的iOS开发书籍。
去年出版的《iOS 7 Programming Pushing the Limits》 以及 《Objective-C高级编程:iOS与OS X多线程和内存管理》 都算是不错的进阶方面的读物。顺便打个广告,我自己也在写一本iOS进阶方面的图书,年底前应该能上市。
看WWDC视频
由于iOS开发在快速发展,每年苹果都会给我们带来很多新的知识。而对于这些知识,第一手的资料就是WWDC的视频。
通常情况下,一个iOS开发的新知识首先会在WWDC上被苹果公开,然后3个月左右,会有国内外的博客介绍这些知识,再过半年左右,会有国外的图书介绍这些知识。所以如果想尽早地了解这些知识,那么只有通过WWDC的视频。
现在每年的WWDC视频都会在会议过程中逐步放出,重要的视频会带有英文字幕。坚持阅读这些视频不但可以获得最新的iOS开发知识,还可以提高英文听力水平。
看苹果的官方文档
苹果的官方文档相当详尽,对于不熟悉的API,阅读官方文档也是最直接有效地方式。
苹果的文档比较海量,适合选一些重点来阅读,比如人机交互指南就是必读的,而其它的内容可以遇到的时候作为重点资源来查阅。
看开源项目的代码
大家一定有这样的感受,很多时候用文字讲解半天,还不如写几行代码来得直观。阅读优秀的开源项目代码,不但可以学习到iOS开发本身的基本知识,还能学习到设计模式等软件架构上的知识。
如果读者能够参与到开源项目的开发中,则能进一步提高自己的能力。
多写代码,多思考
知识的积累离不开实践和总结,我认为iOS代码量如果没有超过10万行,是不能称得上熟悉iOS开发的。某些在校的学生,仅仅做了几个C++的大作业,就在求职简历里面写上“精通C++”,则真是让人哭笑不得。
在多写代码的同时,我们也要注意不要”重复造轮子”,尽量保证每次写的代码都能具有复用性。在代码结构因为业务需求需要变更时,及时重构,在不要留下技术债的同时,我们也要多思考如何设计应用架构,能够保证满足灵活多变的产品需求。
在多次重构和思考的过程中,我们就会慢慢积累出一类问题的“最佳实践”方式,成为自己宝贵的经验。
多和同行交流
有些时候遇到一些难解的技术问题,和同行的几句交流就可能让你茅塞顿开。。另外常见的技术问题通常都有人以前遇到过,简单指导几句就能让你一下子找到正确的解决方向。
国内开发者之间的交流,可以通过论坛,微博,QQ群等方式来进行。另外各大公司有时候会办技术沙龙,这也是一个认识同行的好机会。
需要特别提醒的是,和国内开发者之前交流要注意讨论质量,有一些论坛和QQ群讨论质量相当低下,提的问题都是能通过简单Google获得的,这种社区一定要远离,以提高自己的沟通效率。
除了在国内的技术社区交流,建议读者可以去国外的stackoverflow:http://www.stackoverflow.com上提问或回答问题。
分享
值得尝试的分享方式有:发起一个开源项目、写技术博客、在技术会议上做报告。这几种方式都比较有挑战,但是如果能大胆尝试,肯定会有巨大的收获。
Posted by 唐巧 Jul 27th, 2014 iOS
提升自身的iOS编程水平 (转载)的更多相关文章
- 提高C#编程水平的50个要点
下面的文章转载于 提高C#编程水平的50个要点 1.总是用属性 (Property) 来代替可访问的数据成员 2.在 readonly 和 const 之间,优先使用 readonly 3.在 as ...
- paip.提升性能---并行多核编程哈的数据结构list,set,map
paip.提升性能---并行多核编程哈的数据结构list,set,map vector/copyonwritearraylist 都是线程安全的. 或者经过包装的list ::: collection ...
- [译] 二、开始iOS编程之前,你还需要做什么?
声明:本文翻译自AppCoda网站的文章:What You Need to Begin iOS Programming?,作者是创建者Simon Ng.如有异议,请联系博主. 更新:帖子已经重新被 ...
- 27个提升效率的iOS开源库推荐
DZNEmptyDataSet(UI,空表格视图解算器) PDTSimpleCalendar(UI,drop-in日历组件) MagicalRecord(实施活跃记录模式的Core Data助手) C ...
- IOS编程User Interface基础
IOS编程之User Interface基础 目录 概述 相关概念 常见问题 状态栏的隐藏 应用图标的设置 概述 IOS用户界面是APP呈现给用户最直观.最常用的方式,因此学会用户界面的编程是学习IO ...
- IOS编程之多线程
IOS编程之多线程 目录 概述——对多线程的理解 IOS中实现多线程的三种方式 NSThread 线程创建 线程的同步与锁 线程间的交互 线程的操作方法 NSOperation and NSOpera ...
- iOS编程——经过UUID和KeyChain来代替Mac地址实现iOS设备的唯一标示(OC版)
iOS编程——通过UUID和KeyChain来代替Mac地址实现iOS设备的唯一标示(OC版) 很多的应用都需要用到手机的唯一标示,而且要求这个唯一标示不能因为应用app的卸载或者改变而变化. 在iO ...
- 提高C#编程水平不可不读的50个要诀
提高C#编程水平的50个要点 1.总是用属性 (Property) 来代替可访问的数据成员 2.在 readonly 和 const 之间,优先使用 readonly 3.在 as 和 强制类型转换之 ...
- IOS编程教程(八):在你的应用程序添加启动画面
IOS编程教程(八):在你的应用程序添加启动画面 虽然你可能认为你需要编写闪屏的代码,苹果已经可以非常轻松地把它做在Xcode中.不需要任何编码.你只需要做的是设置一些配置. 什么是闪屏 对于那些 ...
随机推荐
- [POJ1741]Tree(点分治模板)
传送门 良心解析 其实以前在求某段序列上的区间统计问题时就碰到过类似于这样的思想. 当时的区间统计问题思路大致是这样: 选取一个点作为中间点,从这个点的左边和右边统计出满足条件的点对.然后当前的中间点 ...
- 北京集训TEST13——PA(Goodness)
题目: Description 桌面上放有 n 张卡牌.对于每张卡牌,一面是绿色的,另一面是红色的.卡牌的每一面都标有一个整数.对于卡牌a和卡牌b,卡牌a对卡牌b的好感度为卡牌a绿色面的数与卡牌b红色 ...
- Bootstrap开启模态框后对数据处理(标记模态框的开启与关闭状态)
JS用全局变量标记状态,方法中动态修改全局变量以标记状态是一个重要思想. 需求:组合条件查询数据,查询完之后填充到模态框中,开启模态框,模态框中有组合条件查询,此时查询只需要更新模态框表格数据不需要开 ...
- laravel 查询构造器2
//查询构造器 public function query() { //获取所有的数据 $student = DB::table('student')->get(); var_dump($stu ...
- SGU103+POJ 1158 最短路/dp
题意:一个无向图,求起点到终点最少时间,限制:每个路口有灯,要灯颜色一样才能过去,灯之有俩种颜色,周期 变化,给定每个灯初态,时间. 思路:开始就想到直接DP,方程dp[k]=dp[i]+distan ...
- Codeforces 86D Powerful array (莫队算法)
题目链接 Powerful array 给你n个数,m次询问,Ks为区间内s的数目,求区间[L,R]之间所有Ks*Ks*s的和. $1<=n,m<=200000, 1<=s< ...
- JavaScript插件
Spket ide Spket ide是强大的工具包为了JavaScript和XML的开发,这个强大的编辑器对JavaScript, XUL/XBLand Yahoo! Widget的开发都有全面的支 ...
- IO流(1)-键盘录入学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分从高到低存入文本文件
1.先写一个Student类 public class Student { private String name; private int chinese; private int math; pr ...
- 设计模式之装饰(Decorator)模式
设计模式之装饰(Decorator)模式 (一)什么是装饰(Decorator)模式 装饰模式,又称为包装模式,它以对客户端透明的方式扩张对象的功能,是继承关系的替代方案之一. 装饰模式可以在不使用创 ...
- 使用systemtap调试Linux内核 :www.lenky.info
http://www.lenky.info/archives/category/nix%E6%8A%80%E6%9C%AF/%E8%B7%9F%E8%B8%AA%E8%B0%83%E8%AF%95