swift個人總結

2022-06-28 12:06:09 字數 3063 閱讀 8326

最近ios10 已經開始正式使用,研究使用了swift3.0,將一些總結記錄於此,以便以後查閱.持續更新中.

swift中一般將一些功能相近的方法寫在同乙個延展中,便於**的規範,找起來也方便.區別oc,swift中的在本檔案中,屬性可以不用加self.直接寫屬性名字就能呼叫.swift3.0中private更加嚴格,如果方法前加了private,那麼只能在方法被定義的方法內部呼叫.fileprivate是可以在本檔案中使用.

面向協議的程式設計思想.swift語言蘋果公司稱其為可以面向協議的程式語言.大牛們總結說,swift程式設計中除非沒辦法的情況下才用繼承,大多數情況下使用協議來解決問題,開始還不是很理解,今天開始有點頓悟了.原來一直用的繼承是因為什麼,是想繼承父類的屬性和方法,現在用協議完全可以一樣的解決啊,並且結構體和列舉型別也能遵循協議,並且都可以簽訂多個協議,想要有什麼功能就實現什麼樣的協議就好了.協議中也可以定義屬性(這一點和oc不同).

首先我們來對比如下兩段示例**,**的功能是定義乙個更具擴充套件性的二分查詢法。12

3456

78910

1112

1314

1516

1718

19class ordered

}

class number: ordered

}

func binarysearch(sortedkeys: [ordered], forkey k: ordered) -> int

else

}

returnlo

}12

3456

78910

1112

1314

1516

1718

19protocol ordered

struct number: ordered

}

func binarysearch(sortedkeys: [t], forkey k: t) -> int

else

}

returnlo

}

應該不難看出兩者之間的區別以及孰優孰劣,簡單解釋一下前者的缺點,反過來也就是後者的優點了。

基於上面的例子,我們可以稍微感受到面向協議程式設計在擴充套件性上的優勢了,這裡再提幾個注意點。

那麼問題來了,簽訂了協議就得實現協議,相同的方法在每個類中都去實現**的重用性豈不是就差了,swift2.0以後蘋果推出了協議的擴充套件,協議的擴充套件中可以給協議實現預設的實現

// 擴充套件型別

extension int: ordered

}

extension string: ordered

}

let intindex = binarysearch([2, 3, 5, 7], forkey: 5)// 輸出結果2

let stringindex = binarysearch(["2","3","5","7"], forkey:"5")// 輸出結果212

3456

78910

// 擴充套件協議

extension comparable

}

extension int: ordered {}

extension string: ordered {}

let intindex = binarysearch([2, 3, 5, 7], forkey: 5)// 輸出結果2

let stringindex = binarysearch(["2","3","5","7"], forkey:"5")// 輸出結果2

從上面的**我們可以看出,協議可擴充套件所帶來的功能之一就是能夠為協議中的方法提供預設實現。

swift面向協議變成我的總結:

物件導向程式設計和面向協議程式設計最明顯的區別在於程式設計過程中對資料型別的抽取(抽象)上,物件導向程式設計使用類和繼承的手段,資料型別是引用型別;而面向協議程式設計使用的是遵守協議的手段,資料型別是值型別(swift中的結構體或列舉)。面向協議程式設計是在物件導向程式設計基礎上發展而來的,而並不是完全背離物件導向程式設計的思想。物件導向程式設計是偉大的程式設計思想,也是當今主流的程式設計思想,它的問題在於被過多的使用在其實並不需要使用它的情況下。

swift是一門支援多程式設計正規化的語言,既支援物件導向程式設計,也支援面向協議程式設計,同時還支援函式式程式設計。在專案開發過程中,控制器和檢視部分由於使用系統框架,應更多採用物件導向程式設計的方式;而模型或業務邏輯等自定義型別部分,則應優先考慮面向協議程式設計。

面向協議程式設計是乙個比較新的思想,目前只是隱約可以看出它的一些長處,具體的還是需要在使用過程中不斷體會.

swift 總結 函式

param personname 引數 returns string為返回值 func sayhello personname string string swift2中函式的呼叫必須要使用標籤或者別名,沒有別名第乙個標籤不帶 func add a int,b int int print add 1...

Swift 簡單總結

1.swift簡單總結 一 資料簡單值和型別轉換 2.swift簡單總結 二 簡單值和控制流 3.swift簡單總結 三 迴圈控制和函式 4.swift簡單總結 四 函式和類 5.swift簡單總結 五 列舉和結構體 6.swift簡單總結 六 協議擴充套件與泛型 7.swift簡單總結 七 資料型...

技術總結 swift文件注釋總結

作為乙個有 潔癖的猿類,對整潔的注釋必須要強迫症,xcode為我們提供了十分豐富的文件提示功能,在開發過程中,我們可以十分方便的按下option鍵,選中乙個類或者方法檢視其文件說明。而實際開發過程中我們也可以使用規範的方法新增注釋,達到這樣的效果。本篇主要介紹幾種常用的文件注釋方法。多行注釋文件相比...