iOS完全自学手册——[一]Ready?No!
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!的更多相关文章
- iOS完全自学手册——[三]Objective-C语言速成,利用Objective-C创建自己的对象
1.前言 上一篇已经介绍了App Delegate.View Controller的基本概念,除此之外,分别利用storyboard和纯代码创建了第一个Xcode的工程,并对不同方式搭建项目进行了比较 ...
- iOS完全自学手册——[二]Hello World工程
1.前言 写第二篇文章之前,我在想第二篇应该怎么写?后来觉得与其写Objective-C语言的相关语法,不如直接开始写个小项目.语法简单入门即可.因为,即便把语法看的很深到最后还是不一定能做项目,运用 ...
- <iOS>other linker flags[转]
包含静态库时候需要在Target的Other linker flags里面加上值:-objC,-all_load,-force_load 对于64位机子和iPhone OS应用 解决方法是使用-all ...
- iOS10收集IDFA,植入第三方广告[终结]--ADMob
[PS: 前段时间,公司做ASO推广,需要在应用中收集IDFA值,跟广告平台做交互!于是有了这个需求--] 1.首先,考虑了一下情况(自己懒 -_-#),就直接在首页上写了一个Banner,循环加载广 ...
- [caffe]linux下安装caffe(无cuda)以及python接口
昨天在mac上折腾了一天都没有安装成功,晚上在mac上装了一个ParallelDesktop虚拟机,然后装了linux,十分钟就安装好了,我也是醉了=.= 主要过程稍微记录一下: 1.安装BLAS s ...
- [Swift]基础
[Swift]基础 一, 常用变量 var str = "Hello, playground" //变量 let str1="Hello xmj112288" ...
- [Ruby on Rails系列]4、专题:Rails应用的国际化[i18n]
1. 什么是internationalization(i18n)? 国际化,英文简称i18n,按照维基百科的定义:国际化是指在设计软件,将软件与特定语言及地区脱钩的过程.当软件被移植到不同的语言及地区 ...
- [译]一个灵活的 Trello 敏捷工作流
[译]一个灵活的 Trello 敏捷工作流 翻译自 An Agile Trello Workflow That Keeps Tasks Flexible Getting things done 可不只 ...
- Lua完全自学手册(图文教程)
Programming in Lua程序设计 http://book.luaer.cn/ Lua完全自学手册(图文教程) https://edu.aliyun.com/course/506/les ...
随机推荐
- spring mvc , spring data jpa 知识点
<mvc:view-controller path="/login" view-name="login.jsp"/> <!-- 会直接跳到/W ...
- C++ 面向对象基本释义
public:子类继承,子类亦可以访问.本类函数可以访问,本类对象可以访问. private:子类继承,子类不可访问.本类(所有)函数以及友员函数可以访问,本类对象不可以访问. protect:子类继 ...
- TF Boys (TensorFlow Boys ) 养成记(二): TensorFlow 数据读取
TensorFlow 的 How-Tos,讲解了这么几点: 1. 变量:创建,初始化,保存,加载,共享: 2. TensorFlow 的可视化学习,(r0.12版本后,加入了Embedding Vis ...
- Docker 技巧:删除 Docker 容器和镜像
默认安装完 docker 后,每次执行 docker 都需要运行 sudo 命令,非常浪费时间影响效率.如果不跟 sudo,直接执行 docker images 命令会有如下问题: Get http: ...
- linux将程序扔到后台并获取程序的进程号
我们经常需要写一些执行时间较长的程序,但是如果在程序执行过程中超时了,有许多原因,可能是程序已经挂起了,这时就需要杀死这样的进程,则可以通过如下的命令执行: java -jar TestProcess ...
- Linux中的LVM和软RAID
在实际工作中,会经常碰到所给的服务器硬盘容量太小,而实际的应用软件中却需要一个容量较大的分区进行数据存储等,除了通过硬件RAID卡来实现合并多硬盘外,其实我们也可以通过软件的方式来实现. 实验 ...
- (并查集)How Many Tables -- HDU --1213
链接: http://acm.hdu.edu.cn/showproblem.php?pid=1213 http://acm.hust.edu.cn/vjudge/contest/view.action ...
- (线段树 区间合并更新)Tunnel Warfare --hdu --1540
链接: http://acm.hdu.edu.cn/showproblem.php?pid=1540 http://acm.hust.edu.cn/vjudge/contest/view.action ...
- underscore chain
//可以在面向对象或者函数的风格下使用Underscore_.map([1, 2, 3], function(n){ return n * 2; }); //一般习惯用这种 _([1, 2, 3]). ...
- LoadRunner 技巧之 IP欺骗 (推荐)
IP欺骗也是也loadrunner自带的一个非常有用的功能. 需要使用ip欺骗的原因:1.当某个IP的访问过于频繁,或者访问量过大是,服务器会拒绝访问请求,这时候通过IP欺骗可以增加访问频率和访问量, ...