纪录我的iOS学习之路
学习资料的网址
田伟宇(Casa Taloyum)有几篇介绍iOS架构的文章,一级棒!原博客链接。
郭曜源的博客,感觉研究性质很浓,尤其对优化方面深入浅出,之前看源码的时候,也受惠于他的博客。
很喜欢这种类型的博客,包括上面田伟宇大神的。可以从文字间感受到对方的浑厚的技术实力。反观自己的博客,还有很长的路要走。
我的学习经历
从2015年8月初买了mac后开始学习iOS开发,直接上手项目(已经上线,AppStore搜索魔界-魔术)的。过段时间应该会上线。但是由于野路子出生,写完后,发现自己代码有以下几个问题。
- quick&dirty,代码很乱,有时候自己都不知道在哪。需要重新组织代码结构。
- 没有mvc架构意识,造成m,v,c强耦合,往往改一处要动很多地方。
- 命名不规范,想到什么就写什么。
- 还有很多,苦不堪言......
2015.09.30
第一步着手将viewdidload中的UI组件创建写到getter和setter中,viewdidload减少代码量。主要参考的iOS应用架构谈 view层的组织和调用方案,我觉得这篇好文要读烂为止。
2015.10.03
getter和setter太多,而且之前写的耦合太高,很难分离。我目前给自己定了一个执行度高的目标,先将mainstory面板清空。
2015.10.04
今天将Mainstory面板全部转为代码了,我个人比较喜欢代码构建界面,怎么说了,一方面是心理原因,我不喜欢别人帮我做太多事情。另一方面,代码写界面还是很棒的,简单的界面,其实用代码并不花很长时间,复杂界面的话,代码会让我思路更清晰。本人现在还是一个人开发,所以没体会到stroyboard造成的冲突之类问题。
下一步还是接着把能写到getter和setter的代码整理出来。
关于getter和setters的做法,唐巧大神的博客iOS 开发中的争议(一)并不提倡这样做。但是我更认同Casa Taloyum的观点——嗯,怎么说呢,其实两种做法都能完成需求。但是从另一个角度看,苹果之所以选择让[self getProperty]
和self.property
可以互相通用,这种做法已经很明显地表达了苹果的倾向:希望每个property都是通过getter方法来获得
。
2015.10.08
这段时间一边在改getter&setter,一边在考虑项目目录的架构。
目录架构主要有两篇文章比较好,当然,还有很多好文章。
- iOS 项目的目录结构能看出你的开发经验 (我主要参考的是这篇文章,我使用了先按模块划分,再MVC)
2015.10.12
http://ruby.taobao.org/已经变成https协议了。呵呵,搞了我半天。
2015.11.30
之前花了很长时间跟随Casa Taloyum大神的博客,坚定实行去model化,使用了其中惊为天人的reformer机制。稍微有点感触,其实我觉得不管是reformer还是model,其实都是一个数据形式转化的过程,只是model化是直接将网络传来的json转化为本地所用的model,而reformer的话,直接将网络传来的json,不通过model化,直接用一个refomer类转化为所需的数据形式。有图可能更简单一点:
网络层部分参照了田大神的网络层设计,只是模仿了皮毛而已,但是已经感受到了强大,比如网络数据如何传给本地,使用的是delegate!!!
目前正在看小码哥(李明杰老师)的视频,还是很有收获,主要是学到了很多编程中的思路,比如封装,重构。
2016.01.27
很久没记录下学习的进程了。主要学业上的事情比较多,没有太多时间去学习iOS。这段时间比较值得说一下的进步就是阅读完了SDWebImage源码,并且正在阅读AFNetworking源码。当初阅读SDWebImage源码时候,很是痛苦,差点就放弃了。不过最后还是挺过来了,瞬间感觉功力大增。觉得看源码写博客的学习方式很适合自己。后面直接选择阅读AFNetworking源码,感觉比SDWebImage要难上许多,不过人不挑战自己,怎么会进步!?希望在年前能把阅读AFNetworking源码系列文章写完。
2016.02.03
AFNetworking源码系列终于结束了。感慨很多,从SDWebImage到AFNetworking,感觉自己的表达方式变得成熟,之前的一些博客,有时候连自己都不知道在说什么。现在感觉条理结构稍微清晰了一些。接下去还是分析一些源码。
2016.03.31
这一个月都没怎么学习iOS新知识,一半时间都在火车上跑来跑去。终于可以歇一会了。这段时间除了继续完善i博客园的app,准备开始写一系列造轮子的博客。希望可以深入学习iOS知识,而不是停留在只会堆砌代码的水平上。目前简单写了一个JSON转Model的代码,代码还有很多问题,不过总的来说学到很多。希望能跟源码阅读系列一样,可以坚持下去。挺享受iOS开发带来的成就感:)。
纪录我的iOS学习之路的更多相关文章
- IOS开发---菜鸟学习之路--(二十二)-近期感想以及我的IOS学习之路
在不知不觉当中已经写了21篇内容 其实一开始是没有想些什么东西的 只是买了Air后 感觉用着挺舒服的,每天可以躺在床上,就一台笔记本,不用网线,不用电源,不用鼠标,不用键盘,干干脆脆的就一台笔记本. ...
- 浅谈iOS学习之路(转)
转眼学习iOS已经快两年的时间了,这个路上有挫折也有喜悦,一步步走过来发现这个过程是我这一辈子的财富,我以前的老大总是对我说,年轻就是最大的资本(本人91年),现在才算是慢慢的体会到,反观自己走过的这 ...
- 浅谈iOS学习之路
转眼学习iOS已经快两年的时间了,这个路上有挫折也有喜悦,一步步走过来发现这个过程是我这一辈子的财富,我以前的老大总是对我说,年轻就是最大的资本(本人91年),现在才算是慢慢的体会到,反观自己走过的这 ...
- IOS学习之路--OC的基础知识
1.项目经验 2.基础问题 3.指南认识 4.解决思路 ios开发三大块: 1.Oc基础 2.CocoaTouch框架 3.Xcode使用 -------------------- CocoaTouc ...
- 我的IOS学习之路(三):手势识别器
在iOS的学习中,对于手势的处理是极为重要的,如对于图片,我们经常需要进行旋转,缩放以及移动等.这里做一下总结,详见代码. - (void)viewDidLoad { [super viewDidLo ...
- 我的iOS学习之路(四):动画设置
在ios的开发过程中,经常需要对视图控件进行变化,如大小,颜色,旋转等,这是如果直接将变化结果呈现出来,就显得不够友好,所以我们通常会使用动画,让用户能够看到变化的过程. 使用动画通常有两种方式,一种 ...
- IOS学习之路二十(程序json转换数据的中文字符问题解决)
ios请求web中的json数据的时候经常出现乱码问题: 例如请求结果可能如下:"\U00e5\U00a5\U00bd\U00e8\U00ae\U00a4" 在网上查到的解决方法是 ...
- IOS学习之路十四(用TableView做的新闻客户端展示页面)
最近做的也个项目,要做一个IOS的新闻展示view(有图有文字,不用UIwebview,因为数据是用webservice解析的到的json数据),自己一直没有头绪,可后来听一个学长说可以用listvi ...
- IOS学习之路九(配置restful webservice 框架restkit)
RestKit 是一个开源的 objective-c 框架,容许在 iOS 和 Mac OS X 的 Objective-C 中与 RESTful Web 办事进行交互,包含简单的 HTTP requ ...
随机推荐
- html中如何添加提示信息
提示:在标签中添加title属性 1.文本中如何添加提示信息? 1.1直接在标签中加title="值": 例如:<p title="爱笑,爱哭,爱生活"& ...
- 将表里的数据批量生成INSERT语句的存储过程 增强版
将表里的数据批量生成INSERT语句的存储过程 增强版 有时候,我们需要将某个表里的数据全部或者根据查询条件导出来,迁移到另一个相同结构的库中 目前SQL Server里面是没有相关的工具根据查询条件 ...
- .net core快速上手
2014年11月12日的Connect ();开发者活动上宣布将.NET堆栈基于MIT协议开源,并且提供开源保证,托管在Github上.当时的版本与最终目标相距甚远,然而有一点可以肯定的是,这是一个与 ...
- iOS - 模态Model视图跳转和Push视图跳转的混合需求实现原理
在研发中总会遇到一些莫名的需求,本着存在即合理的态度跟大家分享一下"模态Model视图跳转和Push视图跳转的需求实现",本文仅仅传授研发技术不传授产品以及UE的思想,请大家合理对 ...
- iOS网络4——Reachability检测网络状态
一.整体介绍 前面已经介绍了网络访问的NSURLSession.NSURLConnection,还有网页加载有关的webview,基本满足通常的网络相关的开发. 其实在网络开发中还有比较常用的就是网络 ...
- Oracle中的commit详解
本文转自 : http://blog.csdn.net/hzhsan/article/details/9719307 它执行的时候,你不会有什么感觉.commit在数据库编程的时候很常用,当你执行DM ...
- 跟着老男孩教育学Python开发【第一篇】:初识Python
Python简介 Python前世今生 Python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解 ...
- Quartz
Quartz是一个开源的作业调度框架,它完全由Java写成,并设计用于J2SE和J2EE应用中.它提供了巨大的灵 活性而不牺牲简单性.你能够用它来为执行一个作业而创建简单的或复杂的调度. eg: ja ...
- [转]ThinkPHP中实例化对象M()和D()的区别,select和find的区别
1.ThinkPHP中实例化对象M()和D()的区别 在实例化的过程中,经常使用D方法和M方法,这两个方法的区别在于M方法实例化模型无需用户为每个数据表定义模型类,如果D方法没有找到定义的模型类,则会 ...
- Oracle 用Drapper进行like模糊传参查询需要在参数值前后带%符合
Oracle 用Drapper进行like模糊传参查询需要在参数值前后带%符合 string sqlstr="select * from tblname where name like ...