1.前言

今天开始我会不定期写一些iOS自学的相关文章。毕竟,自己是自学开始,知道自学有哪些坑,知道自学对于开发欠缺什么,此外,加上现在的实际开发经验,希望能给自学的iOS开发者一些建议。

2.Ready?

2.1 工欲善其事,必先利其器 —— 务必要有自己的 Mac

微博上 @不知霜舞哀伤udspj (http://weibo.com/udspj ,公众号 udspj_manga )妹纸画过一副图,关于iOS新手的建议,漫画上给的回复是“不要怕花钱”。我很认,舍不得孩子套不着狼,没有Mac干毛线的iOS开发?或者你说暂时用虚拟机或者黑苹果。但是,且不说这样做很浪费时间,光是这种地沟油式的(援引自 @tinyfool  )盗版思想,就没必要再学iOS开发了。

所以,还是老老实实买台Mac OS的机子吧,哪怕是11寸Air,或者Mac mini都可以的啊,或者买个二手的MacBook能用就行,这样能切身地体验苹果的产品才是刚开始学习iOS开发要做的。

不过,可以不需要有iPhone,模拟器可以搞定开发。但是,最好要有,因为可以体验iOS的各种UI动画的效果,和苹果生态带给用户的服务。

2.2 选择Objective-C还是Swift?

嗯,我建议是如果急于找工作的话先学Objective-C,毕竟主流商业项目还是用oc,若是swift可以自己学习使用。但是,Swift还是必须要学的,谁让这是人家苹果的亲孩子,并且已经开始主推,开源还跨平台,哪天要是能做服务端的脚本语言。

2.3 Linux/Unix的基础

用Mac OS做开发最大的好处就是,图形界面和unix的操作系统可以兼得。学习iOS应该先接触一些Linux/Unix操作系统的基础,比如一些简单常用的bash命令,系统目录等。

2.4 文档!文档!

苹果的官方文档非常好,写得很详细。但是唯一的难度就是全英文的,作为一个,大学只过四级的英语渣渣来说,看文档真心累。但是,看久了也就越来越熟练了,知道如何使用文档。以后,我会整理一个关于文档使用的文章。现在,我看文档也是比较累,真心觉得英语很关键哪。

2.5 Xcode的使用

Xcode作为iOS应用唯一的编译软件,自然非常重要,对于interface builder ,navigator ,inspector,调试栏等都要熟练掌握。

2.6 参考书

我买了不少iOS开发的书,看完的也就两本,粗略看过的大概不超过10本。看不完没关系,慢慢看嘛~

对于入门来说,先学一门语言基础一点的就成。

  • 如果是Objective-C,《Objective-C程序设计》、《精通iOS 开发》(我就是看完的这两本),随便看看就好,对iOS开发有一定了解就成。
  • 如果是Swift,《Swift 开发指南》、《Swift权威指南》都可以入门。
  • 其他入门的书也可以看看《iOS数据库应用高级编程》(这本书很坑,根本不能称之为高级)、《iOS高级编程》(这本书很坑+1,翻译的译作者把professional翻译成高级也真真是醉了!)、《iOS 8 案例大全》(各种小demo的堆砌,入门的话看这个练手不错)
  • 进阶的书,我比较推荐 《精通Objective-C》、《Objective-C编程之道:iOS设计模式解析》、《iOS编程实战》、《iOS网络高级编程》、《Core Data应用开发实践指南》,这几本我粗略看过,没看完,但真心觉得很好。
  • 其他杂七杂八的书,《iOS 逆向工程》(狗神的书,买了至今没看呢T_T)、《黑客攻防技术宝典 iOS实战篇》(仍然木有看)、《iOS Auto Layout开发秘籍》(木有看+1)、《PhotoshopCC 移动UI界面设计与实战》(基本就是小人书,都是图画,看着玩可以,不过没有学习价值)

但是书,看看就好了,最重要的还是要写代码,多练习。千万不要落入,把所有书看完再找工作的误区,只要有点基础,投简历就是了,真正的项目开发才是最能快速提高技术的。

2.7 开发

在自学阶段的开发,除了各种demo练习,最好能做个小应用,有完整功能的最好。当然,只有UI也可以。网上也有很多高仿的应用吧,不过我认为,自己做的能完整做完对开发项目有帮助。

另外,就是,真心觉得初学能用storyboard就用sb,能用xib就用xib,不要只用代码搭建UI,费时费力,而且不利于对 iOS的开发模式的学习。

3.工作?oh,NO!

关于开发工作,我是这么认为的,由于2015年初互联网+炒作太火了,而且移动互联网是主流趋势,iOS开发依旧会很火,加上苹果出大屏手机,大部分消费者都趋于选择iPhone。不过,这个行业永远都是需要的是人才,现在培训的学员太多了。所以,刚出来没工作经验的,还是很难找的。当时,我自己找工作也是比较难,从PHP转iOS并不好转,基本从零开始。所以,找工作的新手要做好心理准备。

另外,现在的市场,我觉得确实也比较浮躁。不过,真本事永远都是自己的,时间久了,苦一两年,也就无所畏惧了。哪一行都一样,所以要有心理准备,记得一句话,这么说的,“人生最艰难的就是,第一份工作,和最后一次说再见”。也没什么的,学到东西就好嘛。

4.结语

我一直认为,人但凡想做一件事情,只要真心想做,就一定能做成。日积月累,厚积薄发。任何行业都有其社交圈子,演艺圈,商业圈,IT圈云云~但凡圈子,都有大佬,那些人一开始选择了这个圈子,期间他们不像其他人一样弃圈换坑,而是,一直在做,经历了那么多年的危机,现在依旧好好的。所以,作为后浪,不要着急,反正跟大佬比,我们年轻,跟小辈比我们有经验。总之,时间久了,一切都会有的,面包,爱情都会有的~~嗯,bug可以没有。

iOS完全自学手册——[一]Ready?No!的更多相关文章

  1. iOS完全自学手册——[三]Objective-C语言速成,利用Objective-C创建自己的对象

    1.前言 上一篇已经介绍了App Delegate.View Controller的基本概念,除此之外,分别利用storyboard和纯代码创建了第一个Xcode的工程,并对不同方式搭建项目进行了比较 ...

  2. iOS完全自学手册——[二]Hello World工程

    1.前言 写第二篇文章之前,我在想第二篇应该怎么写?后来觉得与其写Objective-C语言的相关语法,不如直接开始写个小项目.语法简单入门即可.因为,即便把语法看的很深到最后还是不一定能做项目,运用 ...

  3. <iOS>other linker flags[转]

    包含静态库时候需要在Target的Other linker flags里面加上值:-objC,-all_load,-force_load 对于64位机子和iPhone OS应用 解决方法是使用-all ...

  4. iOS10收集IDFA,植入第三方广告[终结]--ADMob

    [PS: 前段时间,公司做ASO推广,需要在应用中收集IDFA值,跟广告平台做交互!于是有了这个需求--] 1.首先,考虑了一下情况(自己懒 -_-#),就直接在首页上写了一个Banner,循环加载广 ...

  5. [caffe]linux下安装caffe(无cuda)以及python接口

    昨天在mac上折腾了一天都没有安装成功,晚上在mac上装了一个ParallelDesktop虚拟机,然后装了linux,十分钟就安装好了,我也是醉了=.= 主要过程稍微记录一下: 1.安装BLAS s ...

  6. [Swift]基础

    [Swift]基础 一, 常用变量 var str = "Hello, playground" //变量 let str1="Hello xmj112288" ...

  7. [Ruby on Rails系列]4、专题:Rails应用的国际化[i18n]

    1. 什么是internationalization(i18n)? 国际化,英文简称i18n,按照维基百科的定义:国际化是指在设计软件,将软件与特定语言及地区脱钩的过程.当软件被移植到不同的语言及地区 ...

  8. [译]一个灵活的 Trello 敏捷工作流

    [译]一个灵活的 Trello 敏捷工作流 翻译自 An Agile Trello Workflow That Keeps Tasks Flexible Getting things done 可不只 ...

  9. Lua完全自学手册(图文教程)

    Programming in Lua程序设计   http://book.luaer.cn/ Lua完全自学手册(图文教程) https://edu.aliyun.com/course/506/les ...

随机推荐

  1. hdu-1124(数学问题,求n!的尾零的个数)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1124 思路:每五个数1个0,5个5就2个0(不用管2,一定充足) #include<iostre ...

  2. 处理jQuery选择器中的特殊符号,如(、#等

    前几天解决一个外网问题,客服反馈页面数据加载不出来,首先看一下服务端日志也没报错异常,自己测试了一下,在chrome的Console发现有js报错,原来是js报错导致的数据加载不出来. 调试了一番,发 ...

  3. 多块盘制作成一个lvm

    1.创建pv[root@autodeploy nfs]# pvcreate /dev/vdd1WARNING: xfs signature detected on /dev/vdd1 at offse ...

  4. c语言中几个常见的库函数strlen、strcmp、strcat、strcpy、strncpy、memset、memcpy、memmove、mmap

    1.strlen() 1)计算给定字符串的长度,不包括’\0’在内 unsigned int strlen(const char *s) { assert(NULL != s);//如果条件不满足,则 ...

  5. An existing resource has been found at location D:\Tomcat 7\apache-tomcat-7.0.55\webapps。。。

    这个错误是说你的资源丢失,就是说tomcat无法解析你的.class文件,需要自己重新配置一下. 解决方法: 右击项目名 ---> 点击properties --> 在搜索栏里 输入 WE ...

  6. SessionCacheTest03.testLoad Unrooted Tests initializationError

    这个错误主要是没有加载@Test这个标签,就是把其转化为一个juit测试的类.增加之后就没有问题了,当然还有很多人说是自己的Juit的版本问题,那就改下版本,还有说是没有加载两个类包,为了完整我就把包 ...

  7. python读取文件,python读取的1变成\ufeff1

    '\ufeff1' movies={} fm=open(self.path+'/movie.txt',encoding='utf-8') w2=open('./data/1.txt','a') for ...

  8. ISO 8895-1

    https://en.wikipedia.org/wiki/ISO/IEC_8859-1#Codepage_layout http://czyborra.com/charsets/

  9. python正则表达式转义注意事项

    无论哪种语言,在使用正则表达式的时候都避免不了一个问题,就是在匹配元字符的时候,需要对元字符进行转义,让 正则表达式引擎将其当做普通字符来匹配.本文主要以python为例,说明一下转义中需要注意的问题 ...

  10. Java Socket重要参数讲解

    (转自http://www.cnblogs.com/ggjucheng/archive/2012/01/06/2314679.html) ( http://docs.oracle.com/javase ...