当前位置: 首页>編程日記>正文

iOS开发入门学习路线

iOS开发入门学习路线

当前移动开发主要分为安卓开发和iOS开发,对于想学习移动端开发的人来说,两者都是不错的选择。简单对比下两者的区别,安卓的app主要分布在各种厂商的应用商店,如华为,小米的应用商店,iOS的app集中在苹果的app store,苹果对于app的审核周期更长一些。安卓开发主要使用Java语言,近年也有app采用Kotlin开发。iOS的app采用Objective-C开发,近年苹果在推广Swift语言。安卓系统可以由厂商做一些定制, iOS系统是闭源的操作系统,苹果对于iOS的app审核比较严格一些。安卓开发可以在Windows或者mac平台开发,iOS的开发环境必须使用mac平台搭建。本篇文章主要介绍iOS开发入门,帮助想学习iOS开发的人更有效率地学习。

一 软件,硬件准备
学习iOS开发需要一台mac电脑,安装Xcode开发软件。至于苹果手机,如果有的话更好,使用模拟器也可以完成大部分的开发工作,除了推送,扫码等依赖真机的情况。

二 计算机基础知识
你至少需要熟悉或者了解一门编程,比如C++,java等。在学习技术的过程中,无论是前端,移动端,还是服务端,编程语言是基础。比较流行的编程语言C++或者java是要学习的,当你有编程语言基础的时候,再学习Objective-C或者Swift会很容易上手。不建议你的第一门编程语言是Objective-C或者Swift,因为很多资料是比较老的,容易误导新手。当然,除了编程语言基础,你还可以了解网络相关知识,图片、音视频相关知识等。如果你着急入门iOS开发,最简单的就是先掌握一门编程语言,其他的知识也可以后面边用边学。

三 Objective-C和Swift如何选
早年的iOS开发全部采用Objective-C,2014年,苹果推出新的编程Swift,打算用它取代Objective-C。多年过去了,已经有些app采用纯Swift开发, 但仍然有很多app采用纯Objective-C开发,或者两种编程语言混编。这给开发者带来一个问题,学习iOS究竟是选择Objective-C还是Swift呢?如果是个人开发者,想学习iOS开发或者自己做一个app上架,建议学习使用Swift,毕竟Swift是苹果力推的编程语言,今后也是iOS开发的趋势。如果你是为了求职而学习iOS开发,学习使用Objective-C依然是可取的,现在很多互联网大厂的app依然是Objective-C开发或者混合开发。先选择一门编程语言,学习它的基础知识,进行iOS开发入门,等到了解iOS开发之后,然后再学另外一门编程语言,这时的学习效率是很高的, 因为不管是Objective-C还是Swift,他们都使用的同样的iOS的api,只不过语法不同而已。编程语言不是学习技术的障碍,对于一个有几年开发经验的工程师而言,快速入门一种编程语言是基本素养。

四 iOS开发环境搭建
熟悉了Objective-C或者Swift之后,接下来可以进行iOS开发入门了。首先你要搭建开发环境,搭建iOS开发环境稍微有点麻烦,这里推荐一篇文章,按照文章的内容就可以搭建出来。
搭建iOS开发环境

五 iOS开发需要学习什么
a.了解MVC模型
认识Model,View,Controller他们的作用,这点很重要,在写任何一个页面的时候,你可能都会用到它
b.View相关的控件
也就是UIKit里面的各种UI组件,可以先学一些最常见的,UILabel,UIButton,UIImageView,UITableView,UIScrollView,UIAlertController,UISwitch等。认识这些控件后,需要学习iOS的UI布局,frame布局,autolayout布局等,学会把这些控件组合起来形成自己想要的UI样式
c.ViewController的生命周期viewDidLoad,viewWillAppear,viewDidAppear,viewWillDisappear,viewDidDisappear等,了解他们的调用时机,以及他们执行的工作
d.事件响应机制
iOS的事件采用事件链,了解事件是如何传递和响应的,这有助于你写好页面的交互用于响应用户点击、长按、拖动等。
e.JSON数据格式
了解JSON数据是如何构造的,它有哪些规范,然后是要会把JSON反序列化为一个实例对象,或者反过来,把一个实例对象序列化为JSON
f. 数据持久化
需要掌握NSUserDefaults的用法,用来存储和读取数据,如果数据量比较大的情况,可以学习iOS的数据库相关的第三方库,比如FMD,Realm等
g.多媒体
在iOS开发中,可能需要用到图片,音频,视频等相关功能,如何下载和显示图片,可以学习SDWebImage的使用,音视频相关如果有用到,也可以在网上找一些开源库学习
h.网络
一些app可能仅仅在本机运行,不需要和远端的服务器交互,但是大多app还是需要服务端参与,所以网络请求相关的知识也是必备的。需要学习NSURLSession发送网络请求,解析JSON数据,然后反序列化。也可以学习第三方库AFNetWorking,它封装了系统的API,使用它发送网络请求,解析网络数据是非常方便的。
i.动画
动画让APP的交互更加炫酷,需要学习UIView所支持的各种动画,比如frame动画等
j.多线程
在较为复杂的app中,多线程是必备的操作,比如在网络请求中需要开启子线程来发送网络请求或者解析数据,然后回到主线程渲染UI,多线程相关的知识可以学习GCD
k.调试
在开发app的过程中,不可避免会出现一些bug,基本的Xcode调试功能就派上用场了,借助于Xcode提供的调试工具,可以完成bug修复
l.开发者账号
如果你的APP想上架app store,那么你需要购买苹果的开发者账号,用于上传你app应用
m. 网络抓包
在和服务端交互时,我们需要查看数据是否正确,这时需要使用charles工具,可以在官网下载,具体使用方法可以参考这篇文章
charle抓包配置
n.CocoaPods
它是iOS开发的依赖管理工具,在开发app的过程中,会用到很多成熟的第三方库,比如上面提到的AFNetworking,SDWebImage等,这些库可以通过CocoaPods管理
o.webView
当前比较流行的h5渲染组件是WKWebview,了解iOS开发中如何使用h5页面,并且和h5进行交互,许多app采用的是原生Native开发和h5混合的模式

iOS开发书籍推荐
《Objective-C 基础教程》

iOS开发文档推荐
Objective-C官方文档
About Objective-C

Swift官方文档
Swift文档

UIKit官方文档
UIKit

iOS开发视频推荐
斯坦福大学iOS开发视频

以上是我总结的iOS开发需要掌握的一些内容,比较偏基础学习,绝大部分内容都是实际开发常用的,因此需要重点学习。随着技术的不断发展,iOS开发也跟随着在演化,近年来跨端技术蓬勃发展,以Weex,RN,Flutter等为代表的框架也被很多app采用,在熟悉了iOS开发之后,再去学习这些内容更佳。在iOS开发技术相对成熟的今天,用户体验依然是比较重要的话题,在熟悉iOS开发之后,可以去了解iOS的app如何监控,埋点,做性能优化等,这里面有很多内容,可以逐步了解。


https://www.fengoutiyan.com/post/15237.html

相关文章:

  • 鏡像模式如何設置在哪,圖片鏡像操作
  • 什么軟件可以把圖片鏡像翻轉,C#圖片處理 解決左右鏡像相反(旋轉圖片)
  • 手機照片鏡像翻轉,C#圖像鏡像
  • 視頻鏡像翻轉軟件,python圖片鏡像翻轉_python中鏡像實現方法
  • 什么軟件可以把圖片鏡像翻轉,利用PS實現圖片的鏡像處理
  • 照片鏡像翻轉app,java實現圖片鏡像翻轉
  • 什么軟件可以把圖片鏡像翻轉,python圖片鏡像翻轉_python圖像處理之鏡像實現方法
  • matlab下載,matlab如何鏡像處理圖片,matlab實現圖像鏡像
  • 圖片鏡像翻轉,MATLAB:鏡像圖片
  • 鏡像翻轉圖片的軟件,圖像處理:實現圖片鏡像(基于python)
  • canvas可畫,JavaScript - canvas - 鏡像圖片
  • 圖片鏡像翻轉,UGUI優化:使用鏡像圖片
  • Codeforces,CodeForces 1253C
  • MySQL下載安裝,Mysql ERROR: 1253 解決方法
  • 勝利大逃亡英雄逃亡方案,HDU - 1253 勝利大逃亡 BFS
  • 大一c語言期末考試試題及答案匯總,電大計算機C語言1253,1253《C語言程序設計》電大期末精彩試題及其問題詳解
  • lu求解線性方程組,P1253 [yLOI2018] 扶蘇的問題 (線段樹)
  • c語言程序設計基礎題庫,1253號C語言程序設計試題,2016年1月試卷號1253C語言程序設計A.pdf
  • 信奧賽一本通官網,【信奧賽一本通】1253:抓住那頭牛(詳細代碼)
  • c語言程序設計1253,1253c語言程序設計a(2010年1月)
  • 勝利大逃亡英雄逃亡方案,BFS——1253 勝利大逃亡
  • 直流電壓測量模塊,IM1253B交直流電能計量模塊(艾銳達光電)
  • c語言程序設計第三版課后答案,【渝粵題庫】國家開放大學2021春1253C語言程序設計答案
  • 18轉換為二進制,1253. 將數字轉換為16進制
  • light-emitting diode,LightOJ-1253 Misere Nim
  • masterroyale魔改版,1253 Dungeon Master
  • codeformer官網中文版,codeforces.1253 B
  • c語言程序設計考研真題及答案,2020C語言程序設計1253,1253計算機科學與技術專業C語言程序設計A科目2020年09月國家開 放大學(中央廣播電視大學)
  • c語言程序設計基礎題庫,1253本科2016c語言程序設計試題,1253電大《C語言程序設計A》試題和答案200901
  • 肇事逃逸車輛無法聯系到車主怎么辦,1253尋找肇事司機