你好,歡迎來到IOS教程網

 Ios教程網 >> IOS使用技巧 >> IOS技巧綜合 >> 小知識點

小知識點

編輯:IOS技巧綜合
[摘要]本文是對小知識點--小結的講解,對學習IOS蘋果軟件開發有所幫助,與大家分享。

一 OC 小結

1 什麼是 OC 語言?

OC 語言即面向對象語言,它擴展了 ANSI C 語言,將 SmallTalk 式的消息傳遞機制加入到 ANSI C 中.它是蘋果 OS 和 iOS 以及相關的 API,Cocoa 和 Cocoa Touch 的主要編程語言.

2 OC 語言的特點:

    支持 C 語言語法,是 ANSI-C 語言的一個超集,是一種高效的編程語言. 是 C 語言面向對象的擴展,完全支持面向對象的特性. 簡潔易讀的編程風格,使編程和閱讀更加清晰. 兼容性好,可以在項目中直接導入 C 和 C++ 的頭文件,也可以在文件中直接使用OC 和 C++ 編程.

3 iOS 的生態系統不僅僅指其軟件方面的豐富,更多指的是其設備的多樣性.

4 Core OS

是用 FreeBSD 和Mach所改寫的Darwin,是開源的符合 POSIX 標准的一個 UNIX 核心.該層包含所有 iOS 的基礎功能(所有的這些功能都是通過 C 語言的 API 來提供的).另外該層具有 UNIX 特點,因此當將 UNIX 上的功能移植到 iOS 上的時候用到Core OS 的 API.同時該層還提供了硬件和系統框架之間的接口,但出於安全考慮,只有有限的框架能使用.

5 Core Services

它在 Core OS 的基礎上提供了更為豐富的功能,其中包括 Foundation.Framework 和 Core Foundation.Framework.之所以叫 Foundation 是因為,它提供了處理字串,排列,時間等基礎功能.).其中 Foundation 屬於 OC 是 API, 而 Core Foundation 屬於 C 的 API.另外 Core Sercies 還提供了Security(處理認證,密碼管理,安全性管理),Core Location(定位)SQLite(輕量級的數據庫),Address Book(處理電話本)等功能.

6 Media

即提供圖像,音樂,影片等多媒體功能.其中圖片包括2D(Quartz 2D) 和3D(Open GLES).音樂對應的模塊是Core Audio 和Open AL. 影片用 Media Player來支持.最後還提供了Core Animation動畫支持.

7 Cocoa Touch

它是 OC的 API其中最核心的部分的 UIKit.Framework,應用程序上的各種組件全部由它來提供實現.除此之外還負責多點觸摸.文字的輸出,圖片網頁的顯示,相機/文件的存取以及加速感應的部分.

8 swift

它繼承了 OC 的面向對象優點,同時又具有簡便的語法結構.它具有以下特點.

    閉包的統一 元組和多個返回值 泛型 快速而簡潔的迭代范圍/集合 支持的方法和擴展的協議 函數式的編程模式 不通過編譯即可查看效果 高效強大 安全

9 OC 和 Swift 之間的區別

    Swift句末不需要加分號,除非一行中寫幾行代碼 Swift沒有 main 函數,函數的執行是從上往下執行. Swift沒有. h 和. m 文件只有. Swift文件. Swift沒有地址的概念 Swift的數據類型會自動判斷(變量用 var, 常量用let) 強制類型轉換: OC的強轉à(int)a, Swift的強轉àint(a) 整數的數據類型可以通過 .min 和 .max來獲取最大和最小值 定義類型:OC:Typedef int Myint Swift:Typealiaes Myint = int Swift的摸除取余運算支持小數 Swift中 BOOL 類型中不在是 OC 中的非0即真,而是 true 為真 false 為假 Swift的賦值運算沒有返回值 Swift可以多對多賦值: let(x,y) = (1,2) Swift的循環語句必須加{},就算只有一行代碼,也要加 Swift的 switch 語句後面可以跟任何數據類型,並且裡面不用 break

注:如果不想要break的效果 即後面的都想執行 那就寫上關鍵字 fallThrough,但在fallThrough後面就不能再定義常量變量了

10 swift 獨有的特點

    運算: a…b 表示[a,b] a..<b 表示(a,b) 獨有的溢出運算符:即當你賦值的時候大於其最大值范圍,則會報錯 Swift獨有元祖類型

Var a = (x:15,y:20.0)

其中 a 就是元祖名,裡面有兩個元素 x和 y.

取出賦值:a.x = 10或者 a.0 = 10(默認有下標)

修改類型: var a = (int,string) = (10,21.0)

打印時: printIn(a) = (10,20.0)

用下劃線省略不需要的元素 var a = (_,20.0)

    Switch 語句中與元祖類型的時候,還可以用類似 SQL 語句的語法,添加過濾條件. 函數的外部參數名

原來是形式: func Sum(num1:int,num2:int) àint{} 調用: Sum(10,20)

現在:func Sum(numOne num1:int,numTwo num2:int) àint{}

調用: Sum(numOne:10,numTwo:20)

    函數的默認參數值

func addPerson(name:string,age:Int = 18) à string{}

調用: addPerson(“tom”)

注:修改年齡時 addPerson(“Tom”,age:19)

二 ARC 和 MRC 內存管理

從 MRC—>ARC 就是將內存管理部分,從開發者的函數中轉移到函數外部的runtime 中.由於 runtime 的開發簡單,邏輯層次高,所以 runtime 的出錯幾率很小,另外由於編譯器的優化,使得運行速度很高.

ARC 的特點:

    不能顯示的調用 dealloc,retain,release 等(同樣不能再 ARC 中自定義的 delloc 方法中調用[super dealloc]方法.不能調用@selector(retain), @selector(release)的方法) 不能使用 NSAllocateObject 和 NSDeallocateObject來創建和釋放對象. 不能使用 C 語言結構體中使用對象指針 id 和 void * 之間不能隨意轉換 不能使用NSAutoreleasePool對象 不能使用內存區域.為了自動 retain—release,ARC 在內存管理方面做了一些限定,即不能以 new 為開頭命名編譯器名稱,也就是說不能以 new 開頭命名屬性,除非指定一個不同命的 getter 方法.

三 NSURLConnettion , NSURLSession,AFN 以及SYNetFrame處理網絡請求

1 NSURLConnettion

NSURLConnettion是 Core Foundation/CFNetwork框架 API 之上的一個抽象. NSURLConnettion是用來指代 Core Foundation 框架中的一系列組件: NSURLRequest,NSURLResponse,NSURLProtocol,NSURLCache,NSHTTPCookieStorage,NSURLCredentialStorage以及同名類NSURLConnection.

注1:原來的使用原理:一個 NSURLRequest 發送給 NSURLConnect.被委托對象(遵守 NSURLConnectionDeledate 和 NSURLConnectionDataDeledate 非正式協議)異步返回一個 NSURLResponce 和服務器的 NSData.

注2:在一個請求發送給服務器的時候,系統會先查詢緩存信息,然後根據策略和可用寫的不同,當在緩存中找到響應則直接返回.否則,系統將根據我們的策略,將接到請求後的響應緩存到並返回.

注3:在把請求發送給服務器的時候,服務器會發出鑒權查詢,這可以有共享的 cookie 或者機密存儲來自動響應,或者由被委托的對象來響應.發送中的請求,也可以被 NSURLProtocol 攔截,以便在必要的時候,無縫的改變其請求.

NSURLConnettion是使用步驟:

1 獲取一個 URL

2 通過 URL 創建一個請求

3 用NSURLConnettion發送請求

2 NSURLSession

和 NSURLConnection 一樣, NSURLSession 不僅僅包括同名的 NSURLSession, 還包括NSURLRequest 和 NSURLCache. 同時將NSURLConnection 對應為NSURLSession,NSURLSessionFiguration 以及NSURLSession 的三個子類,即NSURLSessionTask,NSURLSessionUpLoadTask 和 NSULSessionDownLoadTask.

和 NSURLConnection 相比, NSURLSession 最大的改變可以配置每一個緩存的session 緩存, cookie 值,協議以及證書策略甚至跨程序共享這些信息.這保證了程序和網絡框架之間的相互獨立.每一個 NSURLSession 有一個 NSURLSessionConfiguration 來進行初始化, NSURLSessionConfiguration指定了策略,以及在移動設備上增強性能的選項.

NSURLSession 的另一個特點就是 session Task, 用來處理的上傳和下載.和 NSURLConnection 最大的不同之處在於,所有的 task 共享其創造者 NSURLSession.

注: NSURLSessionTask分析

NSURLSessionTask 是一個抽象類,裡面包含NSURLSessionDataTask , NSURLSessionDownLoadTask 以及 NSURLSessionUpLoadTask三個子類.這三個子類封裝了網絡的基本任務:獲取數據,上傳和下載

使用原理:當一個 NSURLSessionDataTask 完成的時候,會有一個返回的數據,一個 NSURLSessionDownLoadTask 完成的時候會帶一個臨時文件的路徑.文件上傳的時候也會返回一定的數據,所以可以說 NSURLSessionUpLoadTask 是繼承於 NSURLSessionDataTask.所有的 Task 都可以取消,暫停和恢復,當暫停的時候會記錄當前的位置,以便下載繼續從此點繼續下載.需要說明的是 NSURLSessionTask 是由 NSURLSession 創建的.

NSURLSession的使用步驟:和 NSURLConnection 基本相似,然後使用resume方法來將它運行.

1 獲取一個 URL

2 通過 URL 創建一個請求

2.1 創建一個上傳的NSData(UpLoad 上傳的時候用)

3 創建一個NSURLSession的單例

4 通過NSURLSession發送請求(注:使用 resume)

3 NSURLSession 和 NSURLConnection 的區別

NSURLSession即有 session 的代理方法又有 Task 的代理方法.session 的代理方法用來處理連接層的問題(服務器的信任,客戶端證書的評估等),Task 的代理方法用來處理鑒權查詢和與網絡請求有關的問題.

4 AFN 框架

AFN 是對 NSURLConnection 的一層封裝

AFN 的主要功能:

    NSURLConnection

AFURLConnectionOperation

AFHTTPRequestOperation

AFHTTPRequestOperationManager(封裝了常用的 HTTP 方法)

AFHTTPRequestOperationManager的屬性

1 baseURL :開發者針要對 AFHTTPRequestOperationManager 自定義一個單例子類,設置 baseURL, 所有的網絡訪問,都只使用相對路徑即可.

2 requestSerializer :請求數據格式/默認是二進制的 HTTP

3 responseSerializer :響應的數據格式/默認是 JSON 格式

4 operationQueue

5 reachabilityManager :網絡連接管理器

AFHTTPRequestOperationManager方法:

1 manager :方便創建管理器的類方法

2 HTTPRequestOperationWithRequest :在訪問服務器時,如果要告訴服務器一些附加信息,都需要在 Request 中設置

3 GET

4 POST

    NSURLSession

AFURLSessionManager

AFHTTPSessionManager(封裝了常用的 HTTP 方法)

1 GET

2 POST

3 UIKit+AFNetWorking分類

4 NSProgress(利用 KVO)

    半自動的序列化和反序列化

AFURLRequestSerialization :請求的數據格式/默認是二進制的

AFURLResponseSerialization :響應的數據格式/默認是JSON格式

    附加功能

1 安全策略:(HTTPS 和AFSecurityPolicy)

2 網絡檢測: (對鏈接方式進行了封裝和 AFNetWorkingReachabiliManager)

使用鏈接: http://www.cnblogs.com/worldtraveler/p/4736643.html

AFN 的使用步驟:

1 創建一個請求操作管理者

2 聲明響應結果進行 JSON,XML等數據解析,返回 Data

3 設置請求參數

4 發送請求

補充 ASI: (功能很強大,但是已經不更新了)

ASI 使用步驟:

1 獲取 URL

2 獲取 ASI 請求對象

3 發送請求

AFN和ASI的區別

一、底層實現

1> AFN的底層基於OC的NSURLConnection和NSURLSession

2> ASI的底層基於純C語言的CFNetwork框架

3> ASI的運行性能 高於 AFN

二、對服務器返回的數據處理

1> ASI沒有直接提供對服務器數據處理的方式,直接返回data\string

2> AFN提供了多種對服務器數據處理的方式

* JSON處理

* XML處理

* 其他處理

三、監聽請求的過程

1> AFN提供了success和failure兩個block來監聽請求的過程(只能監聽成功和失敗)

* success : 請求成功後調用

* failure : 請求失敗後調用

2> ASI提供了3套方案,每一套方案都能監聽請求的完整過程

(監聽請求開始、接收到響應頭信息、接受到具體數據、接受完畢、請求失敗)

* 成為代理,遵守協議,實現協議中的代理方法

* 成為代理,不遵守協議,自定義代理方法

* 設置block

四、在文件下載和文件上傳的使用難易度

1> AFN

* 不容易監聽下載進度和上傳進度

* 不容易實現斷點續傳

* 一般只用來下載不大的文件

2> ASI

* 非常容易實現下載和上傳

* 非常容易監聽下載進度和上傳進度

* 非常容易實現斷點續傳

* 下載或大或小的文件都行

五、ASI提供了更多的實用功能

1> 控制圈圈要不要在請求過程中轉

2> 可以輕松地設置請求之間的依賴:每一個請求都是一個NSOperation對象

3> 可以統一管理所有請求(還專門提供了一個叫做ASINetworkQueue來管理所有的請求對象)

* 暫停\恢復\取消所有的請求

* 監聽整個隊列中所有請求的下載進度和上傳進度

四 正式協議和非正式協議

正式協議:指的是一個以@ protocol方式命名的方法列表,它要求顯示的采用協議.包括@required 和@optional.

正義協議的意義:將正義協議中的方法剝離出來

非正式協議:定義為凡是 NSObject的類或其子類的類別.非正式協議的方法是自己定義的

五 HTTP 的 TCP/UDP 協議

1 TCP/IP 或者 UDP/IP 協議組,包括三層網絡協議即網絡層,傳輸層,應用層.

網絡層協議包括:IP 協議, ICMP 協議, ARP 協議, RARP 協議以及 BOOTP 協議.

傳輸層協議包括:TCP 和 UDP 協議

應用層協議包括:FTP,HTTP,SMTP,DNSTELNET 等.

TCP 需要三層握手, UDP 不需要

結論: HTTP 雖然是一個協議,但是其還是基於 TCP 的協議.

2 scoket

socket 即 TCP/IP 或者 UDP/IP

Scoket 的優缺點:

優點:

    傳輸的數據為字節,傳輸的數據可以自定義,傳輸的數據小 傳輸數據時間短,性能高 適用於實時交互 可以加密,數據安全

缺點:

    需對傳輸的數據進行解析,轉化為應用級的數據 對開發人員的開發水平要求比較高 相對於 HTTP 協議增加了開發量

HTTP 協議的優缺點

優點:

    基於應用級的接口,使用方便 對程序員的要求水平不高,容錯力強

缺點:

    傳輸數據量大 容錯能力差 實時交互能力差

總結: Scoket 適用於對傳輸速度,安全性,實時交互,費用等要求較高的時候使用.HTTP則相反,適用於快速開發

六 JSON/XML 數據解析

1 XML 即可擴展標記語言(標記是計算機可以理解的語言,通過標記計算機就可以處理事件).可擴展性指的是:定義這些標記語言的時候,既可以使用國際通用的語言(HTML),也可以使用自定義的標記語言.

1.1 簡單來說, XML 是一種數據的描述語言,但是呢, XML 沒有語言的基本功能即被計算機所讀取,因此 XML 需要用另一種語言來解讀.

1.2 XML 的基本特點

    是一種標記語言,很類似 HTML 它設計是宗旨是傳輸數據而非顯示數據 它的標簽沒有預定義,因此要自己定義標簽 它具有自我描述性 它是 W3C 推薦的數據格式

1.3小結

XML 是獨立於軟件和硬件之外的一種語言,它在 Web 中的作用幾乎和 HTML 一樣重要.XML 無處不在,它是軟件中傳遞的最常用的數據格式.並且越來越流行.

注: XML 可以用於移動端和 PC 端,它是用來保存和傳輸數據的, HTML 是用來展示數據.

1.4 XML 的特點

    XML 是不作為的.即 XML 僅僅是對數據的保存和傳輸並不對數據進行操作 XML 僅僅是一個純文本,因此能處理文本的軟件都能處理 XML.但是 XML 的標簽要有特定的應用程序來處理. XML 可以自定義標簽 XML 是對 HTML 的補充而非替代. XML 是用來存儲和傳遞數據的, HTML 是用來顯示數據.

1.5 XML 的解析方式 DOM 和 SAX 解析

1.5.1 XML 的總體解析步驟:

    XML 就是一棵樹,因此解析的時候要先找到它的節點,從節點開始解析 找到對應節點的最小節點即元素,然後對元素進行解析 根據對應的元素,解析出對應的 String 並賦值給VideoInfo 這個類

1.5.2 DOM 和 SAX

DOM 即文檔對象類型, SAX即當前兩個主要使用的 API

1.5.3 DOM 和 SAX 的區別

> DOM 解析的時候將數據一次性讀入內存並進行解析, XML 解析的時候是以流的方式,邊讀入邊解析.因此對於比較大的 XML 是不適合用 DOM 解析的.

> DOM 用來處理 XML 文檔比較復雜或者隨機的處理 XML 文檔中的數據.而 SAX 處理的時候則是從頭到尾的一個個節點進行處理

2 JSON 解析

JSON 構建於兩種結構:(類似於)鍵值對和值的有序列表

2.1 JSON 的解析方法有: NSJSONSerialization(原生),TouchJson,SBJSON,

JSONKit.

2.2 JSON 解析步驟

2.3 JSON解析方法: http://blog.csdn.net/enuola/article/details/7903632/

3 XML 和 JSON 的區別

JSON:沒有結束標簽,更短,讀寫速度快,能夠使用內建的方法進行解析,使用數組,不使用保留字.總之 JSON 是一種輕量型的數據解析格式.

七 GCD 和 NSOperation

1 pthread 是 C 語言中的線程方式,不多做要求(了解)

創建方式: int resurt = pthread_creat(&pthread,NULL,demo,NULL);

2 NSThread 創建方式

    動態方法

NSThread*thread=[[NSThreadalloc]initWithTarget:selfselector:@selector(run)object:nil];

[threadstart];

    靜態方法

[NSThreaddetachNewThreadSelector:@selector(run)toTarget:selfwithObject:nil];

    隱式創建方法

[selfperformSelectorInBackground:@selector(run)withObject:nil];

3 GCD

3.1使用消息循環的時候必須指定的兩個條件:輸入源和循環方式

Runloop 接收輸入事件的來源有兩種:輸入源和定時源.

消息循環的兩種方式: NSDefaultRunloopMode和 NSRunloopCommenModels

3.2 主線程的消息循環默認是開啟的,子線程的消息循環需要手動開啟方式如下:

[[NSRunloop currentRunloop] run];

3.3 GCD的執行步驟

> 創建任務

> 將任務添加到隊列中

3.4 GCD 的兩種執行任務的函數:同步執行函數(dispatch_sync)和異步執行函數(dispatch_async)

3.5 同步和異步函數決定了要不要開啟子線程,並發隊列和串行隊列決定了執行的方式.

3.6 主隊列:若主線程正在執行代碼,則不調度線程等待主線程執行完成

主隊列同步執行---造成死鎖.

原因:主隊列等待主線程執行完畢,主線程等待主隊列空閒

主隊列和串行隊列的區別:

串行隊列:等上一個任務完成之後再調用當前任務

主隊列:在主線程上運行的隊列.當主線程上有任務執行的時候,不調度任務

3.7 全局隊列在本質上是並發隊列

3.8 比較

3.9 GCD 的特點

延遲操作:dispatch_after即在多少納秒之後,在那個隊列上,執行哪些操作

一次性執行:線程安全,可以代替互斥鎖的使用

調度組:多個異步任務完成之後再做其他操作即dispatch_group_t

4 NSOperation

4.1 NSOperation是一個抽象類

抽象類特點:不能直接使用,因為它的方法在自己的類中沒有實現,約束子類具有相同的屬性和方法,因此抽象類要使用子類

4.2 NSOperation的子類有三種

NSInvocationOperation,NSBlockOperation 和自定義的 operation

4.3 NSOperation 和 NSOperationQueue

先將要執行的操作封裝到NSOperation 中,然後再將NSOperation添加到NSOperationQueue 中.系統會將任務取出,並放在新線程上執行

NSOperation執行的時候默認是不會開啟新線程的,但是添加到NSOperationQueue 中後會開啟新線程

4.4 NSOperation和 GCD 比較

> GCD 是在 iOS4.0之後出現的,是對多核 CPU 做了優化,是 C 語言是技術

GCD 是將任務添加到隊列並以同步/異步執行的函數

GCD 的特點:延遲操作,一次性執行和調度組

> NSOperation iOS2.0推出,4.0後根據 GCD進行了重寫

將操作添加到隊列,就會自動執行操作的函數

特點:最大並發數,隊列的暫停/繼續,取消全部隊列的操作,指定操作間的依賴關系

最大並發數:同時執行的任務數.

注:指定完後,線程先去線程池中尋找有可用的線程,沒有找到後再創建新線程.並且線程執行完後放入線程池中,以待重用.

4.5 服務質量qualityOfService 用來設置操作的優先級

4.6 監聽操作的完成

4.7 設置操作依賴: [opB addDependence:opA];操作 B 依賴於操作 A

八 自動布局

1 自動布局經過的三個時期

MagicNumber->autoresizingMask->autolayout(6.0)

2 Masonry的使用

語法一般是 make.equalTo or make.greaterThanOrEqualTo or make.lessThanOrEqualTo + 倍數和位移修正

九 KVC KVO

1 KVC 鍵值編碼

1.1 作用:KVC 提供了一種在運行狀態而非編譯狀態情況下動態訪問對象的屬性/成員變量的方法.即 KVC 可以通過名稱使用該名稱的屬性.

1.2 使用注意:

    valueForKey: 是以字符串的形式調用對象的 get 方法, setValue: forkey 是以字符串的形式調用對象的 set 方法 對於基本數據類型, KVC會將其封裝為 OC 對象的類型.即基本數據類型封裝為 NSNumber, 結構體為 NSValue 在使用 KVC 的時候,當通過字符串的名稱找不到對應的屬性時,會調用 valueForUndefineKey: 或者 setValue: forUndefineKey 方法,默認會返回異常 KVC 可以訪問對象的私有屬性,並進行修改.這是因為 KVC 可以通過accessInstanceVariablesDirectly方法,並令其返回為 NO.另外 KVC 的方法是定義在 NSKeyValueCoding 的類別中,該類別是附加在 NSObject 上的,所有的對象都有該方法 對於一些特殊的對象調用 KVC 會有特殊的效果,如數組 NSArray 和集合 NSSet調用 valueForKey: 方法的時候,會對每一個屬性用 valueForKey方法 注: valueForKey和valueForKeyPath: 的區別,前者只會在當前類中查找對應的屬性,找不到就返回異常.後面的方法會在整個類文件中查找對應的屬性

1.3 實現原理

    首先查找對象是否帶有 someKey 這個方法,如果沒找到,會繼續查找對象是否帶有someKey這個實例變量(iVar),如果還沒有找到,程序會繼續試圖調用 -(id) valueForUndefinedKey:這個方法。如果這個方法還是沒有被實現的話,程序會拋出一個NSUndefinedKeyException 異常錯誤 補充:KVC查找方法的時候,不僅僅會查找someKey這個方法,還會查找getsomeKey這個方法, 前面加一個get,或者_someKey以_getsomeKey這幾種形式。同時,查找實例變量的時候也會不僅僅查找someKey這個變量,也會查找 _someKey這個變量是否存在

2 KVO 鍵值監聽 保持視圖和模型的同步

2.1 作用:當指定的對象發生改變的時候,該對象就會接收到通知.即每次指定的觀察者發生改變的時候,就會通知相應的觀察者

2.2 使用方法:

    注冊:指定被觀察者的屬性 實現回調方法 移除觀察

2.3 特點:當更改被監聽的值的時候,監聽者會立即接收到通知

2.4 KVO中誰要監聽誰注冊,然後對響應進行處理,使得觀察者與被觀察者完全解耦。KVO只檢測類中的屬性,並且屬性名都是通過NSString來查找,編譯器不會檢錯和補全,全部取決於自己

3 兩者之間的關系

KVC 是 KVO 實現的關鍵技術

十 通知,代理, block 以及單例設計模式

1 簡單對比

1.1 通知:

特點:一對多,多對多,多對一

原理:任何觀察者只要接收通知的名稱和發送者發送通知的名稱相同,則就會接到發送者發送的通知消息

實現步驟:發送通知,注冊觀察者接收通知,移除通知

1.2 代理

特點:一對一

原理:首先分清代理和被代理者.即被代理者不適合做某一件事,讓代理來做

使用步驟:(如圖 注: B 是被代理者, A 是代理)

1.3 block

block 是一個代碼塊,它可以傳遞任何數據

特點:一對一

原理:就是 block 函數的使用,即在一個地方聲明一個block, 在使用的時候,只要在使用的時候調用即可

使用步驟:首先創建一個 block 函數,在需要的地方調用 block 函數

1.4 單例設計模式

單例:即一個類中只有一個實例,並且自行實例化後可以在整個類中使用

使用步驟:

    為單例對象實現一個靜態實例,並初始化,然後設置成nil, 實現一個實例構造方法檢查上面聲明的靜態實例是否為nil,如果是則新建並返回一個本類的實例, 重寫allocWithZone方法,用來保證其他人直接使用alloc和init試圖獲得一個新實力的時候不產生一個新實例, 適當實現allocWitheZone,copyWithZone,release和autorelease。

十一 四種動畫

1 動畫的三要素

    CALayer CAAnimation addAnimation

1.1 CALayer和 UIView 很相似, UIView 有的功能 CALayer 基本上都有,因此說 CALayer 是覆蓋在 UIView 上薄薄的一層.UIView 和 CALayer 的區別是: UIView 上有點擊事件.CALayer 的用途有:一是對 view 的相關屬性設置(如圓角等),二是對 View 的動畫操作,因此可以說對 view 上的動畫操作,本質上是對 view 上的 layer 操作

1.2 CAAnimation 即動畫的分類

CABasicAnimation(基礎動畫):

通過設定起點,終點,時間,動畫會沿著設置點進行移動.

CAKeyframeAnimation(關鍵幀動畫):

即關鍵點的 frame,就是通過設置起點,中間的關鍵點,終點和時間, CALayer 就會沿著設定的點移動.

CAAnimationGroup(組動畫):

即將多個動畫或者多種動畫組合成一個組裡面依次運行.

CATransition(轉場動畫):

蘋果原生的一些特定的動畫

2 動畫的實現步驟

2.1 CALayer 的初始化並設置屬性

2.2 設置動畫的類型並設置動畫的屬性

2.3 添加動畫

十二 數據庫的使用

數據存儲的方式:plist,歸檔(NSKeyedArchiver),偏好設置(NSUserDefaults),write 寫入文件,SQLite,Cocoa Data

使用方式:

http://www.jianshu.com/p/933a035a6ad4

http://www.jianshu.com/p/14fd706b632d

十四 第三方 SDK 集成

注冊成為開發者à下載 SDKà看文檔

十五 runtime

運行時即在程序運行的時候要干的事情.

產生的原因是 C 語言中函數的執行是在編譯的時候就決定好了的,要執行的函數以及函數的執行順序等.OC是繼承於 C 的,是在 C 的基礎上添加了面向對象的特性,面向對象要求把編譯和鏈接的函數盡量向後推遲.OC和 C 有很大的不同,其中就包括 OC 的函數, OC 函數的調用屬於動態調用,就是說 OC 中在編譯的階段僅僅編譯一部分函數,而大部分函數是在程序運行的時候才動態編譯的,這就需要用到運行時.

運行時可以在程序運行的時候在動態的編譯和鏈接函數.同時運行時還具有自省即查看對象正在做的,不能做的以及合適的分發消息

更深入的了解:

OC 的 runtime 是一個運行時庫,它是一個主要有 C 語言和匯編語言寫成庫,給 C 添加了面向對象的特性創建了 OC.也就是說它是在類方法中被加載,完成方法的分發,方法的轉發等.OC 的 runtime 創造了所有的結構體,從而讓面向對象成為可能.

詳細了解: http://www.cocoachina.com/ios/20141008/9844.html

十七 APPWatch 和 XMPP

1 APPWatch的功能實現和控件基本和 iOS 一致的.

使用的注意點:

    是在 watch1.0的入口是先創建一個 iOS 程序之後再添加 watch 的入口. 現在的 watch 程序的使用 swift 比較更好一點. 注意添加表芯 Watch 的代碼運行分為兩部分,一部分是在 iPhone 上執行,另外一部分在 watch 上執行.注,應將比較大的資源文件放在 iPhone 上執行. 實現 watch 和 iPhone 鏈接執行基本是在底層的 WatchKit 框架,因為 iPhone 和 watch 中鏈接的底層框架都是WatchKit. 默認情況下watch 的空間排列是上下排列的,並不能左右排列,因此要控件左右排列的時候需要用到 group 這個控件. Watch 目前僅有38mm 和42mm 兩種 由於 watch 是新出的,所以裡面的屬性和方法還是很少的,可以很方便的查看,因此 watch 開發可以很容易查看

2 XMPP 即時通訊

即時通訊的實質是實時.

XMPP 實現步驟:節點連接服務器à服務器利用本地目錄系統中的證書對其認證à節點指定目標地址,服務器告知目標狀態à服務器查找連接並認證à節點之間進行交互

注: 只要知道程序的協議和程序的端口就能進行交互

十八 BUG 調試

http://stackoverflow.com

十九 git 和 SVN 及其比較

1 SVN屬於集中化版本控制系統,可以理解為 SVN = 版本控制+備份服務器.SVN 支持並行讀寫文件,支持代碼的版本化管理.其功能包括取出,導入,更新,分支,還原,改名等

特點: SVN 大多采用圖形化管理,易於上手.

2 Git 是一個分布式版本管理系統,其功能包括clone,pull,push,branch,merge,

rebase.

特點:程序代碼版本化管理

3 SVN 和 Git 的優缺點

3.1 SVN 的優缺點: SVN對中文支持好,操作簡單,使用沒有難度,實施人員都可輕松上手。使用界面統一,功能完善,操作方便

3.2 Git 的優缺點: 對`程序源代碼進行差異化的版本管理,代碼庫占極少的空間。易於代碼的分支化管理。不支持中文,圖形界面支持差,使用難度大。不易推廣。

4 總結: SVN更適用於項目管理, Git僅適用於代碼管理。

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved