面對有難度的功能,不要忙着拒絕,而是挑戰一下,學習更多知識.html
儘可能獨立解決問題,而不是在遇到問題的第一想法是找人.前端
多學習別人開源的第三方庫,可以開源的庫必定有值得學習的地方,多去看別的大神的博客.python
做爲一個程序員,若是你中止了學習,你也必將會被這個團隊淘汰.ios
要把學習的技能當作興趣,而不是爲了掙錢去學習,是爲了學習技能而學習.程序員
有給本身定製一個詳細的職業規劃和人生規劃,大到5~10年,小到近3年(而且細化到月)的計劃.面試
不要盲目的面試,要針對即將面試的工做,準備面試.算法
首先針對一個本身沒有接觸到的知識,先使用 百度\谷歌等網站搜索資料.而後進行學習數據庫
這是個好東西,我勸你多用用https://developer.apple.com/search/設計模式
嘗試寫一個demo,對新技術進行熟悉.瀏覽器
若是市面上有成熟的Demo或者第三方庫,下載下來進行學習.
在熟悉的過程當中,遇到了任何問題,再進行百度/谷歌,學習不一樣人的不一樣見解和解決方法.
那麼如今說正題,如何成爲負責任的開發者?
首先要負責,對本身的項目負責。若是是本身新開的項目,要保證隨時都能清晰的想到項目當中每一個地方是怎麼實現的,測試或者用戶反饋了問題之後,能立馬想到可能的錯誤緣由。
若是是接手的項目,就要儘快去了解主要的界面和功能是如何實現的。你只有先作好本身份內的事,纔有機會去顧暇別人的事。
1.保持一個良好的代碼規範以及文件架構。 2.天天要給本身作一個TodoList 和一個BugList,時刻保持本身是在有效率的工做,嚴重的須要時間修復的bug彙報上去,小bug本身記下來偷偷修復。 3.有空時將排行榜上的應用下載排名靠前的應用,去欣賞並分析主流app的界面,功能實現,在拿到設計圖時,去考慮界面的合理性,功能怎麼實現最符合用戶的操做習慣。 4.要有必定的協調能力,交流能力,稍微瞭解一點後臺知識以及前端知識。 5.信念,一個不作初級iOS開發的信念。多去了解,不會被別人當小白,學多少都是本身的,至於在你去學習的時候,有人會說風言風語,這就是區別,他們活該初級,本身不會的東西,也看不慣別人去學習。因此,必定要有一個規劃,按照本身正確的規劃去學習,去成長,別原地踏步。
關於後臺你須要懂什麼呢,如何設計接口文檔,接口怎麼設計合理,後臺拿到你請求的數據是怎麼存儲的,你須要的數據後臺又是怎麼查詢給你的,請求方式何時用get何時適合post,JSON格式的數據以及XML數據又有什麼好處。
關於前端你須要瞭解什麼呢,這裏大體提一下H5和app交互,好比H5怎麼調你的方法,你怎麼調H5的方法,數據如何傳遞,圖片如何交給H5顯示,這些都須要去了解。
有些人會以爲,我上面說的這都是廢話,或者說你知道有什麼用嗎,又沒你提意見的資格。iOS的羣廣泛是什麼風氣,就是你提出來一個建議或者意見,若是路人甲會,他就趾高氣昂懟你一頓,若是他不會,他就會說,會這個又沒用,懂這麼多又沒用什麼的bulabulabula。這就是第五點。
若是你想變強,那就作點什麼.
iOS定位
簡介:這裏的定位,僅僅表明我我的意見,僅符合本筆記如何學習從哪裏開始學習,怎麼去學習來講.
還沒有入門
如何判斷本身是否入門
是否瞭解Mac
是否瞭解Xcode
是否瞭解Objective-C
是否會使用UI控件.
若是上面的都不瞭解,那說明你尚未入門,請從iOS學習路線開始學習.
初級iOS開發
說明:做爲一名初級的iOS開發,你須要具有如下技能
必備技能(所有都會的狀況下查看下一項)
Xcode的使用
第三方庫的靈活使用
AFN
MJRefresh
各類網站的使用
如何判斷是否能夠升階
是否瞭解AFNetworking 的實現原理
是否瞭解SDAutolayout/Masonry 一種佈局庫的原理
是否可以處理基本的iOS崩潰緣由/沒法編譯緣由/沒法上架緣由?
是否擁有了必定的工做效率,穩定的工做效率.(而不是說,上面派了一個活下來,忙都忙不完,每天加班,還一堆bug)
是否可以處理第三方庫引發的崩潰.
是否能夠很好的融入工做環境,完成每一階段的工做指標,而不會讓本身疲憊不堪.
結論
iOS中級開發說白了,就是你學會了基本的UI界面搭建,上架,沉澱一段時間,你以爲本身還適合這門行業,還適合,還能接受 這個所謂的iOS開發工程師的行業.你就能夠說是一名中級iOS開發.
這個沉澱時間 大約在1年的實際工做中,就能夠完成.
若是你以爲這門行業不適合你,請仔細結合自身狀況,是否轉另外一門計算機語言,仍是完全轉行.
中級iOS開發
說明:做爲一名中級的iOS開發,你須要具有如下技能
必備技能(所有都會的狀況下查看下一項)
應用的內存處理
應用的推送處理
應用的模塊化/單元測試
應用的第三方集成/集中化管理/穩定迭代
閱讀強大的第三方源碼/擁有快速上手新的第三方庫的能力.
可以接受各類新功能的開發(這裏是指,即便你沒有作過,可是你仍然能夠憑藉着學習,解決任何業務需求:例如:藍牙.AR.攝像頭.硬件交互.等)
清楚明白數據的傳遞方式,應用與後臺如何交換數據,交換數據的過程,結果,格式.
多線程的靈活使用.
各類併發事件的處理/以及界面的合理性/流暢度
設計模式的靈活使用.
如何判斷是否能夠升階
結論
高級iOS開發
說明:做爲一名高級的iOS開發,你須要具有如下技能(我不是高級開發,因此這裏只能給大家提供建議.)
必備技能
應用的組件化/架構分層
數據結構,操做系統,計算機網絡都有本身的瞭解和認知
Shell腳本/python/Ruby/JS 至少會一種.
學習路線
簡介
這裏只簡單闡述一些概念性的東西,以及學習路線規劃,真正的知識請從iOS基礎知識點往下開始看.
Objective-C
介紹
概念
編譯原理
程序啓動原理
App組成
Info.plist
.pch
打開程序
執行main函數
執行UIApplicationMain函數
初始化UIApplication(建立設置代理對象,開啓事件循環)
監聽系統事件
結束程序.
語法.(此處定義可能略失嚴謹,口頭教學爲主)
基礎語法
對象.
屬性
數據類型
方法
繼承
Frame/CGRect/CGPoint和CGSize
內存(針對MRC下狀況進行介紹)
ARC/MRC
弱引用/強引用
Assign,retain,copy,strong
import 和@class的區別
Xcode使用
首先是針對Xcode菜單欄,但願本身能夠去翻譯一下每一個菜單裏每項功能的英文都是什麼意思,有助於本身熟悉並加深印象的使用Xcode.
熟悉Xcode的各個功能.
UIKit控件.
界面分析(下載App進行學習).
在這裏推薦有興趣的開發人員,下載並分析,AppStore中的每項分類的top50的應用,多學習大公司以及流行應用是如何開發應用的,其中流行的,新穎的開發界面的方式能夠總結下來,猜測在大應用中,別的程序員是如何開發的.
界面適配
代碼架構.
各類工具、第三方的使用.
其實每一個項目的創建都大體分爲:項目框架搭建,原生界面搭建,嵌入第三方庫.有不少功能都會用到第三方庫,大多數第三方庫都是本着快速開發,完整功能實現的目的存在的.須要開發人員可以根據業務邏輯不一樣,選擇最好最優質的第三方庫進行使用.
代碼封裝
當使用較多第三方庫後,要求開發人員學習其開發特色,以及其封裝手法,運用在本身的項目上,封裝本身的代碼.靈活運用.
完整項目.
開發技巧
我的心得
iOS基礎知識點
如何學習iOS
剛剛入門(如何學習)
打好基礎,學習OC中各類經常使用語法.
學習如何上架,上架會由於什麼被拒,瞭解App上架規則.
多學習官方說明文檔.
剛剛入職1年(如何穩定)
多看開源或者註明的第三方庫.
收藏並閱讀各類大神的博客或者論壇.
開始考慮項目中的細節優化,內存處理和耗電狀況
入職3年(如何進階)
開始涉獵不止於iOS領域中的知識,會去了解相關職位的基礎知識,例如前端和後臺或者服務器運維,或者項目相關知識,具體往本身的職業規劃靠攏
框架的學習
蘋果自帶框架
第三方框架
AFNetworking
SDAutoLayout
YYKit
SDWebImage
MJRefresh
MJExtension
Bugly
Qiniu
Masonry
TZImagePickerController
Hyphenate_CN
基礎UI控件
UILabel 標題欄
UIButton 按鈕
UIImageView 圖片視圖
UITextField 文本輸入框
UITextView 文本展現視圖
UIProgressView 進度條
UISlider 滑動開關
UIGesture 手勢
UIActivityIndicator 菊花控件
UIAlertView(iOS8廢除) 警告框
UIActionSheet(iOS8廢除) 操做表單
UIAlertController(iOS8出現) 警告視圖控制器
UIScrollView 滾動視圖
UIPageControl 頁面控制器
UISearchBar 搜索框
UITableView 表視圖
UICollectionView集合視圖
UIWebView網頁瀏覽器
UISwitch開關
UISegmentControl選擇按鈕
UIPickerView選擇器
UIDatePicker日期選擇器
UIToolbar工具欄
UINavigationBar通知欄
UINavigationController通知視圖控制器
UITabbarController選擇視圖控制器
UIImagePickerController相冊
UIImage圖片
Xcode的使用
基礎操做 狀態欄
偏好設置
Xcode Source Control 源代碼管理器
Xcode workSpace工做組
Xcode Scheme 計劃
Xcode AutoLayout 約束
Xcode CoreData數據庫
LLDB 斷點調試
StoryBoard
界面預覽
界面適配
內存監測
全局斷點
全局搜索替換
數據存儲
plist
NSKeyedArchiver
SQLite
FMDB
CoreData
NSUserDefault
沙盒存儲
NSDictionary歸檔
App生命週期
應用生命週期
控制器生命週期
alloc
init
建立View
ViewDidLoad
ViewWillAppear
ViewDidAppear
ViewWillDisappear
視圖將要消失 (作一些視圖將要消失時的UI的處理)
ViewDidDisappear
視圖已經消失 (作一些視圖消失以後數據的處理)
viewDidDisappear銷燬定時器
dealloc
didReceiveMemoryWarning
開發者帳號&上架流程
文章推薦:
我的
公司
企業
經常使用知識
通訊
NS系列
宏定義
視圖層次
切換視圖
深淺拷貝
對象序列化
寫入文件
獲取沙盒路徑
翻轉視圖
延伸視圖
九大基本數據類型
九宮格
座標比較
UIColor 、CIColor和CGColor 之間的關係
畫圖
靜態變量
tag值
延時執行方法
界面旋轉+狀態欄隱藏
plist文件
KVC/KVO
謂詞NSPredicate
幀動畫
AutoLayout
isKindOfClass 與 isMemberOfClass
Return/Break/Continue
Core Animation
CALayer
Quartz2D
真機調試
靜態庫
內存管理
iPad與iPhone的區別
響應鏈
異常捕捉
國際化
代碼模塊化
類別/擴展
設計模式
UIScrollView/UITableView/UICollectionView 的嵌套
動態行高
通知/代理/block
程序啓動原理
觸摸事件/手勢
圖文混編
Runtime
NSRunLoop
GCD
ReactiveCocoa開發
3DTouch
界面渲染
Charles花瓶抓包
區分模擬器/真機項目
經常使用知識
單例模式
多線程
網絡請求
定位
源代碼管理Git
真機調試
蘋果內購/廣告
推送/遠程推送
音頻/視頻/二維碼
Block
藍牙/傳感器
物理仿真器UIDynamic
通信錄獲取
iOS高級知識點
Socket
XMPP
加密
MD5詳解
Base64加密解密
RSA非對稱加密
AES對稱加密
音頻
基礎
Core Audio
Audio Toolbox
OpenAL
AVFoundation
Speex語音聊天
AudioQueue/AudioSession
Speex簡介
視頻
AAC視頻.H264推流
P2P傳輸
直播
直播的技術分析與實現
RTMP協議
RTMP直播應用與延時分析
若是作一款inke版的App
推流發佈和播放RTMP
FFmpeg
基於FFmpeg的推流器
HLS流媒體傳輸協議(HTTP Live Streaming)
FFmpeg
ijkPlayer
算法
簡介
冒泡排序
快速排序
插入排序
歸併排序
二分查找
希爾排序
動態規劃
堆排序
ARKit.
SiriKit
HealthKit
HomeKit
SearchKit
IOKit
PDFKit
CloudKit
GameplayKit
SpriteKit
SceneKit
MusicKit
ResearchKit
MapKit
StoreKit
AVKit