从这篇开始起,会写两到三篇iOS方面的文章。可能是一些感受,可能是一些干货,欢迎你的阅读。

今天这篇博客主要分两个部分。

第一部分是对之前Jekyll博客搭建中未解释清楚的地方重新解释一下。

第二部分是iOS开发的一个总结和iOS后期学习的一个安排。

第一部分 Jekyll搭建博客中的问题解答


因为好友许总最近在看我的博客然后进行Jekyll环境的搭建遇到了一些问题。我在此做一个解答。

第一个问题是用ruby gem下载Jekyll时存在time out,及超时无法下载的情况。

这个问题主要是因为“ruby的软件源rubygems.org因为使用的亚马逊的云服务,所以被墙了”(摘自唐巧的博客)

所以我们只要在命令行下更换ruby的源就可以了。具体的点击巧大的博客进去看一下就可以了。

第二个问题是上传代码的问题。

命令行git简单使用具体的操作可以参考这篇博客。另外解释一下这篇博客里少写的一些内容。

git上传代码是需要你的身份的,所以下面两个命令是需要提前输入的。

git config –global user.name “Your Name”

git config –global user.email “you@email.com”

git上传代码时候首先要先git clone下来,比如clone下来的文件夹叫做test。然后你在这个目录的上层目录运用jekyll new test,就会在你clone的目录下面创建jekyll了。然后就可以上传了。

如果后面对我的博客里的一些东西不明白的可以直接留言,或者联系我我会把我的qq或者微信给你。

第二部分 iOS开发小结Ⅰ


###Part Ⅰ iOS开发总结###

说着讲着做iOS开发也有快到半年了。从去年的九月份到现在的三月份,去了中间的寒假,差不多也就半年了。

这半年来有苦也有乐,除了技术上的提升之外。更多的是收获了一群很好的亦师亦友的朋友。

昨天迪哥和我说了一下之前代码里存在的思路和方法上的问题之后,他说我可以写几篇博客了。想想确实也该写写陪伴我那么久的iOS开发了。

首先谈一点个人的感受。

因为我们的开发用了cocoapods做的程序的依赖管理。所以对于github的感受颇深。我之所以开始写博客,很大程度上是因为github这个”开源大社区“。我水平有限,不能很好的为这个大社区贡献我的issue或者发起一个大的项目。所以我现在决定开始写博客,来分享我在成长过程中的点点滴滴,希望我的分享可以帮到别人。

可能我iOS开发的目标就是有朝一日可以像巧大或者MJ那样可以开源一个或者几个start过百过千的项目。

下面是最近做项目过程中获得的一些东西。我会分块来叙述,因为iOS这个系列会出不止一篇文章。所以这一篇现大概叙述。

1. 对于面向对象的理解。

我在刚使用object-c时的时候,只具备c基础,了解简单的面向对象的概念。对于继承重写这些东西理解不是很清楚。而且在第一个项目的时候几乎没有用到面向对象,但是确实在使用oc的过程中,包括和他们做安卓的交流过程中,对于面向对象的理解更加深刻了。

在第二个项目中,在迪哥的指导下。对于具有相同属性的button进行继承。大大简化了管理的成本和代码量。

包括在使用巧大的YTK进行网络请求时,对于有相同参数的api进行继承和重写,这样只需要重写url就可以了,节省了很多代码。

因为对于oc语言的理解还不是很深刻,具体点是对c++不够熟悉,所以对于公有私有的概念不是很清楚。包括在oc中。但是现在可以简单的将一个属性暴露出来然后通过另一个界面传参的方式进行操作。

2. 函数的封装。

简单的说,以前用一个函数用了就用了,甚至在所有界面里都写那一个函数,这样是极其不合理的。

在第二个项目中,我开始进行简单的函数封装,这样简化了很多代码。比如我在设置图片背景色的时候,进行了封装,只留了一个颜色的接口。这样每次调用的时候只需要一个函数就可以对图片的背景进行上色。

毅哥和我说,如果一个函数用了两次以上,那么就可以对这个函数进行封装了。

后期又封装了label根据文字宽度自适应高度函数的封装等等。学会函数的封装很大程度上减少了代码量。

3. 界面传参。

这是昨天迪哥和我说的很重要的一个问题。

开发程序就必然会在两个界面之间进行参数的传递。

举个例子,现在有A,B两个界面。我每次都想尽可能多的把B界面里的东西由A界面传进去,这样A界面就会有很多代码。但实际上这样是有问题的。

这样会造成B界面会有很多冗余的代码,正确的是应该传最少的参数获取最多的东西。这是后期开发中需要重视的一部分。

4. 宏定义的使用。

在第一个项目中,其实已经用到了宏定义,但是宏定义没有很好的使用。

在第二个项目中,逐步将色彩,url等等放在了宏定义中。

宏定义会很大程度上方便项目的管理。所以后面还是要对宏定义做一些更好的优化,增加一些其他的东西。方便后期的开发。

5. 界面的分离和开源组件的使用。

举个简单的例子来说明这个问题。

在一个有上部tabbar的地方,我是用了一个tableview来不停的重绘cell。这是极其不合理的。

应该将这几个部分分为不同的tableview来写,虽然这样会增加代码量,但是这样方便后期的管理。

6. 屏幕适配。

这一点对于iOS开发者永远是一个头疼的问题。

因为后期我们可能采用纯代码开发,减少xib的使用。所以不对xib进行赘述。

毅哥对我函数的封装提出了一个问题,就是我在封装控件的时候,总是喜欢将尺寸固定。后期我在封装的时候要更多的注意center属性和屏幕尺寸,还有就是留出尺寸的接口来方便屏幕适配。

7. 基本概念的理解。

其实在刚开始的时候我无法理解nsmutablearray和nsarray有什么区别。直到毅哥和我解释两者区别之后。

这对我在做第二个项目的时候提供了很多方便。

因为本身oc里的变量属性比较多。所以后期还需要对这些基本的变量进行一个熟悉,方便后期使用。

因为苹果现在要求支持64位操作系统,所以对于变量的取值范围更加的规范起来,这是后期需要注意的一个地方。

8. 界面通信。

因为iOS开发的时候经常需要界面传参,所以对于delegate或者block需要有一个更好的理解。

9. 命名。

我之所以写这点是为了表达我下次做项目一定好好起变量名字。

其他存在的问题我就留着自己消化不发出来了。因为后期的项目可能会采用很多其他的开源组件,会解决很多我现在开发存在的问题。包括json数据解析等等。会逐渐将这些问题和解决方法依次叙述出来。

Part Ⅱ iOS开发后期学习安排

现在对于什么是编程,怎么做开发有了大概的概念了,一个好的程序员得写十万行代码,我估计我现在也就千行出头没多少。

后期iOS开发的学习安排大概集中于以下几点。

1.fmdb进行本地数据库的建立。这是寒假安排任务的时候就安排了的。

2.delegate和block的使用,主要是block的使用。

3.还需要大量阅读别人开源的代码还有迪哥的代码。这是作为一个初学者提升很好的一个办法,而且我现在基本上具备看懂别人开源代码的能力了。最近任务量不是很繁重,所以更多的需要学习。

4.RAC的理解和使用。不详细叙述。

5.对于之前用到的函数再次封装,对于能重复使用的函数要接着用。

6.整理之前用到的方法。

大概就想到这些,后期重点还是阅读迪哥写的代码,自己尝试写一些东西。后面会有一段时间时间比较充裕,是一个重新回顾,学新东西,然后提升的好阶段。

基本内容就是这些,谢谢你的阅读,有什么问题尽管留言。