1. iOS開發主要學哪些
(1) 具備扎實的C , Objective-C編程基礎 ,了解Swift.
(2) 具備良好的編程風格和習慣(有一定的注釋).
(3) 熟悉UI界面的搭建,復雜UI動畫的實現.
(4) 熟悉5.0以後的Xcode開發工具,個版本的特性.
(5) 熟悉iOS的SDK,精通ios裡面UIKit等核心框架.
(6) 熟悉MVC的設計模式,單利,Delegate,的應用和熟悉Notification消息機制.
(7) 熟練掌握MRC&ARC內存管理機制.
(8) 熟練使用AFNetworking,ASI,SDWebImage等第三方框架的應用.
(9) 熟練掌握XML&JSON(更常用)的數據解析.
(10) 熟練掌握NSThread、GCD、NSOperation多線程編程.
(11) 熟練掌握SQLite,FMDB等數據存儲技術.
2. ios開發工程師是做什麼的
Objective-C
Objective-C語言基礎
library,framework的製作
Runtime 編程
LLVM 原理和調優
操作系統
iOS內存管理和調優
iOS的文件系統和沙盒機制
iOS多線程編程(Thread,GCD,NSOperation)
iOS網路和伺服器編程(NSURLConnection,NSURLSession)
iOS系統的各種安全機制
網路編程
iOS網路發送機制調整和優化(NSURLSession)
Socket編程
網路傳輸中的各種保障
對傳輸協議的調整優化
資料庫&持久化方案
常規持久化方案(Keychain,NSUserDefaults,Sqlite,CoreData)
資料庫的使用和設計(Sqlite)
數據結構優化,Sql調優
圖形圖像編程
UIKit,Core Animation和Core Text的繪制
Core Graphics, Quartz 2D, Media Player, AV Foundation
OpenGL ES, GLKit, SpriteKit, SceneKit, Metal
數據結構 & 演算法
基本的演算法和數據結構(排序搜索演算法, 數組, 隊列)
較復雜數據結構的靈活應用(二叉樹, 圖等)
復雜的專項演算法(圖像識別演算法, 拓撲定位等等)
3. 回答一個合格的IOS開發工程師應具備哪些條件
一、Objective-C
C語言是iOS開發的語言基礎,而Objective-C是iOS開發的標准語言,也是為眾多iphone開發工程師所公認的標准,所以必須要掌握。內容包括以下這些:
(1)Objective-C語言基礎;
(2)library,framework的製作;
(3)Runtime編程;
(4)LLVM原理和調優。
二、操作系統
操作系統使計算機系統所有資源最大限度地發揮作用,提供各種形式的用戶界面,使用戶有一個好的工作環境,為其它軟體的開發提供必要的服務和相應的介面。所以,必須對ISO操作系統很熟悉才行。包括以下方面的內容:
(1)iOS內存管理和調優;
(2)iOS的文件系統和沙盒機制;
(3)iOS多線程編程(Thread,GCD,NSOperation);
(4)iOS網路和伺服器編程(NSURLConnection,NSURLSession);
(5)iOS系統的各種安全機制。
三、網路編程
網路編程是學習iOS開發必須掌握的編程技巧,涉及到Htpps、Socket編程等;在這一部分處理的規范程度,直接影響到蘋果AppStore的審核。
(1)iOS網路發送機制調整和優化(NSURLSession);
(2)Socket編程;
(3)網路傳輸中的各種保障;
(4)對傳輸協議的調整優化。
四、資料庫&持久化方案
資料庫持久化就是把數據保存到可永久保存的存儲設備中,持久化的主要應用是將內存中的數據存儲在關系型的資料庫中。
(1)常規持久化方案(Keychain,NSUserDefaults,Sqlite,CoreData);
(2)資料庫的使用和設計(Sqlite);
(3)數據結構優化,Sql調優。
五、圖形圖像編程
iOS開發過程中,大部分的APP都是採用多視圖設計來完成的。所以要熟悉一些圖像的繪制:
(1)UIKit,CoreAnimation和CoreText的繪制;
(2)CoreGraphics,Quartz2D,MediaPlayer,AVFoundation;
(3)OpenGLES,GLKit,SpriteKit,SceneKit,Metal。
六、數據結構&演算法
懂得基本的演算法:
(1)基本的演算法和數據結構(排序搜索演算法,數組,隊列);
(2)較復雜數據結構的靈活應用(二叉樹,圖等);
(3)復雜的專項演算法(圖像識別演算法,拓撲定位等)。
七、業務能力
作為一名優秀或者說是及格的iOS程序員,必須要有一定的將功能需求轉化並實現的業務能力:
(1)一般性業務功能需求分析及實現;
(2)重要業務模塊的需求分析及實現;
(3)中小規模產品的架構,系統設計和實現;
(4)大規模產品或產品線的架構,系統設計和實現;
(5)平台級產品的架構,系統設計和實現。
八、安全方案
另外,還需要提供對數據安全方面有利的方案:
(1)本地數據存儲安全(Keychain);
(2)授權和身份驗證;
(3)傳輸安全(對稱,非對稱,SSL);
(4)App代碼安全。
九、專業素質
作為一名iOS工程師,需要具備一定專業素質,包括:
(1)團隊協作能力。軟體開發要求開發參與者間有一定默契度,從事自己工作之餘為其他同伴創造條件;
(2)溝通能力。能清晰的把你對項目的理解、開發中的問題等轉達給同事和用戶;
(3)強烈的好奇心和學習精神。IOS軟體開發的變化和創新幾乎是每時每刻的,優秀的程序員要適應和主動迎合行業變化的大環境;
(4)冷靜、細心。及時發現問題和判斷對策。
4. 在iOS開發為什麼使用多線程 多線程有哪些方法
多線程是一個比較輕量級的方法來實現單個應用程序內多個代碼執行路徑
在系統級別內,程序並排執行,程序分配到每個程序的執行時間是基於該程序的所需時間和其他程序的所需時間來決定的。
然而,在每個程序內部,存在一個或者多個執行線程,它同時或在一個幾乎同時發生的方式里執行不同的任務。
概要提示:
iPhone中的線程應用並不是無節制的,官方給出的資料顯示,iPhone OS下的主線程的堆棧大小是1M,第二個線程開始就是512KB,並且該值不能通過編譯器開關或線程API函數來更改,只有主線程有直接修改UI的能力
線程概述
有些程序是一條直線,起點到終點——如簡單的hello world,運行列印完,它的生命周期便結束了,像是曇花一現。
有些程序是一個圓,不斷循環直到將它切斷——如操作系統,一直運行直到你關機。
一個運行著的程序就是一個進程或者叫做一個任務,一個進程至少包含一個線程,線程就是程序的執行流。
Mac和IOS中的程序啟動,創建好一個進程的同時,一個線程便開始運作,這個線程叫做主線程。主線成在程序中的位置和其他線程不同,它是其他線程最終的父線程,且所有的界面的顯示操作即AppKit或UIKit的操作必須在主線程進行。
系統中每一個進程都有自己獨立的虛擬內存空間,而同一個進程中的多個線程則公用進程的內存空間。
每創建一個新的進成,都需要一些內存(如每個線程有自己的stack空間)和消耗一定的CPU時間。
當多個進成對同一個資源出現爭奪的時候需要注意線程安全問題
創建線程
創建一個新的線程就是給進程增加一個執行流,所以新建一個線程需要提供一個函數或者方法作為線程的進口。
iOS有三種多線程編程的技術,分別是:
(一)NSThread
(二)Cocoa NSOperation
(三)GCD(全稱:Grand Central Dispatch)
這三種編程方式從上到下,抽象度層次是從低到高的,抽象度越高的使用越簡單,也是Apple最推薦使用的。
NSThread:
優點:NSThread 比其他兩個輕量級
缺點:需要自己管理線程的生命周期,線程同步。線程同步對數據的加鎖會有一定的系統開銷
Cocoa NSOperation
優點:不需要關心線程管理,數據同步的事情,可以把精力放在自己需要執行的操作上。
Cocoa operation 相關的類是 NSOperation ,NSOperationQueue。
NSOperation是個抽象類,使用它必須用它的子類,可以實現它或者使用它定義好的兩個子類:NSInvocationOperation 和 NSBlockOperation。
創建NSOperation子類的對象,把對象添加到NSOperationQueue隊列里執行。
GCD
Grand Central Dispatch (GCD)是Apple開發的一個多核編程的解決方法。在iOS4.0開始之後才能使用。GCD是一個替代諸如NSThread, NSOperationQueue, NSInvocationOperation等技術的很高效和強大的技術。現在的iOS系統都升級到7了,所以不用擔心該技術不能使用。
5. 什麼時候使用gcd什麼時候使用nsoperarion
同屬於 ios多線程技術 NSThread 比gcd輕量級,需要自己管理線程的生命周期,線程同步。線程同步對數據的加鎖會有一定的系統開銷 Grand Central Dispatch (GCD)是Apple開發的一個多核編程的解決方法。在iOS4.0開始之後才能使用。
6. IOS開發,學習一般要多久啊
學習ios開發,一個月左右就可以入門了。
一、
准備工作
1.
Mac、iOS設備、開發者賬號
2.
心態上的准備
二、
學習路線
1.
對編程的基本認識
如果是完全的零基礎,建議先要對編程有個基本的認識。建議從C語言入手,因為C語言比較簡潔易上手,並且和Objective-C很相似。
2.
Objective-C語言學習
當對C語言有個大致的了解後,就可以開始學習Objective-C了。
需要掌握並熟練運用的地方:
1)
面向對象編程的基礎知識。包括:面向對象與面向過程的區別、為什麼要面向對象編程,類、對象、繼承、方法、屬性、介面等概念的理解與使用。
2)
Foundation框架。主要是NSString類、NSArray類、NSDictionary類、NSNumber類、NSRange類的熟練運用。
3)
內存管理MRC、ARC的原理,委託delegate、協議protocol、類別category、塊block的理解與使用。
3.
iOS
SDK/Cocoa
Touch學習
需要掌握的地方:
1)
MVC設計模式。只有理解了iOS的MVC架構,才能把一個應用解剖成一個個單獨的部分,這樣你在開始做一個項目的時候才不會茫無頭緒。
2)UIKit的各種控制項。特別是UITableView和UICollectionView一定要掌握,因為大部分的iOS應用都是由這兩種視圖搭建,吃透了它們那可玩的花樣就很多了,其樂無窮。
3)
導航控制器UINavigationController和選項卡控制器UITabBarController。同上,這兩個控制器也是絕大多數iOS應用UI框架的根基,也是多個MVC協同工作的最典型例子。
4)
場景切換的實現——Segue。熟練使用Segue很重要,因為一個應用一般都是各個界面輪流出現的,兩個界面之間怎樣實現跳轉、怎樣將一個界面的數據傳遞到下個界面,這都是實際開發中會遇到的問題。
5)
Storyboard和AutoLayout的使用。這兩者是一個應用的UI界面設計不可或缺的部分。
6)
其它iOS高級編程。包括:數據存取CoreData/SQLite、多線程GCD、繪圖CoreGraphics、動畫CoreAnimation、網路編程、手勢Gesture、多媒體AVFoundation等等,這些內容都可以實際用到時再深入學習。
7)
第三方庫的使用。
4.
堅持寫代碼、查文檔、讀技術博客
學習編程,一定要勤於動手,看再多的書、再多的視頻,如果不動手敲代碼都是白搭。
7. 如何解決iOS瀑布流運行不流暢
解決辦法
主要要做到一下幾個方面:
除了UI部分,所有的載入操作都在後台完成。
這一點可以通過dispatch或者performSelectorInBackground或者NSOperationQueue來實現。見:
在iOS開發中利用GCD進行多線程編程
iOS開發中使用NSOperationQueue進行多線程操作
避免後台載入完成多個資源之後集中到達佔用UI線程的處理時間太長。
這一點可以通過NSOperationQueue來實現,將資源到UI的展現過程放在隊列中逐個執行,且在每個操作完成之後進行強制等待,可以用usleep(int microSeconds)來解決。
重用cell。
創建cell一般是很慢的,一定要重用,甚至為了performance,可以在view創建之初就創建足夠多的cell在重用隊列中。
原因:
滑動太快,可能同時就發出了比如10個圖片請求。這些請求雖然都在後台運行,但是它們可能在同一個時間點返回UI線程。這個時候如果載入圖片到UIImageView太頻繁,就會造成UI卡得嚴重。
8. ios創建單例使用gcd和不使用gcd的區別
同屬於 ios多線程技術 NSThread 比gcd輕量級,需要自己管理線程的生命周期,線程同步。線程同步對數據的加鎖會有一定的系統開銷 Grand Central Dispatch (GCD)是Apple開發的一個多核編程的解決方法。在iOS4.0開始之後才能使用