- 必要了解
- 快速索引查看
- 錯誤查詢
- 嚴(yán)謹(jǐn)起步
- 項目命名規(guī)范
- 文件和聲明的命名規(guī)范
- 圖片資源的命名規(guī)范
- 注釋規(guī)范
- 常規(guī)注釋
- MARK
- 帶代碼提示效果的注釋
- 開始學(xué)習(xí)
- 數(shù)據(jù)類型
- 字符串
- 數(shù)字
- 數(shù)組
- 字典
- 對象
- 布爾值
- 變量
- 常量
- 變量引用
- 函數(shù)
- block
- 類
- 類的基本格式
- 類的繼承
- 一個功能完善的類:代理方法、接口方法把曼、枚舉類型
- 結(jié)構(gòu)體
- 循環(huán)語句
- 流程控制
- 數(shù)據(jù)類型
- 工程結(jié)構(gòu)設(shè)計
個人整理的swift語言的簡單基礎(chǔ)語法漓穿,便于快速進(jìn)入開發(fā)。遵循個人學(xué)習(xí)理念【字叙赚、詞僚饭、句、段鳍鸵、章、冊击罪、集】,從變量常量(字)入手媳禁,到運(yùn)算邏輯(詞、句)囱怕,到函數(shù)(段)毫别,到類(章),知道這些內(nèi)容岛宦,swift語言的基礎(chǔ)學(xué)習(xí)基本可以告一段落了,接下來就可以開發(fā)簡單的小APP了齐佳。
必要了解
到目前為止债沮,swift已經(jīng)經(jīng)歷了幾個版本,網(wǎng)上有不少它的教程文檔和博客案例硅蹦,但某些已經(jīng)是舊版本的內(nèi)容了闷煤。
快速索引查看
在Xcode中,按下option
鍵假褪,鼠標(biāo)移動到某個方法或?qū)ο笊希髽?biāo)指針會變成問號的效果生音,點擊即可查看該方法或?qū)ο蟮慕忉尅?br>
同樣的缀遍,按下
command
鍵饱须,鼠標(biāo)移動到某個方法或?qū)ο笊希?dāng)前方法或?qū)ο髸優(yōu)樗{(lán)色帶下劃線的可點擊對象,點擊即可進(jìn)入其相關(guān)的代碼頁面锅铅。錯誤查詢
在學(xué)習(xí)時遇到錯誤提示狠角,應(yīng)首先注意關(guān)鍵字(如蚪腋;printIn已棄用姨蟋,使用print),然后檢查類型聲明悠砚,最后查詢網(wǎng)上相關(guān)的解答。
- 可以不寫語句末尾的結(jié)束符灌旧,這個和js等語言不同绰筛,需要適應(yīng);
- 時刻注意類型衡蚂;
- 使用
NSLog
或print
在控制臺輸出骏庸,前者只能輸出字符串,后者可以輸出任何類型具被; - 函數(shù)調(diào)用時,第二個參數(shù)開始需要書寫參數(shù)名补箍,如:
muFunc(5, end: 10, doName: "username")
啸蜜; - 類實例化的時候必須寫參數(shù)名,如:
let myClass = MyClass(name: "dj", age: 29)
裹粤; - 什么時候使用
?
,什么時候使用!
- 什么時候用
let
,什么時候用var
- 優(yōu)雅的點語法
這是官方推薦的中文文檔和代碼示例:
《The Swift Programming Language》in Chinese
嚴(yán)謹(jǐn)起步
另外拇泣,學(xué)習(xí)一門語言前,還需要了解一下它的推薦語法霉翔,即開發(fā)規(guī)范苞笨,這有助于我們從一開始就養(yǎng)成良好的開發(fā)習(xí)慣,對于開發(fā)規(guī)范序芦,可以通過多篇不同的文章來總結(jié)出其約定的規(guī)律粤咪,這樣對于那些有歧義的語法予以適當(dāng)注意,對于約定俗成的語法通過不斷的練習(xí)來強(qiáng)化記憶寥枝,直到成為習(xí)慣。
開發(fā)規(guī)范涉通常及到以下幾點:
- 變量某筐、函數(shù)的命名規(guī)范艾疟;
- 類和類文件的命名規(guī)范;
- 工程目錄的設(shè)計規(guī)范弟疆;
- 注釋規(guī)范;
- 美觀怠苔、嚴(yán)謹(jǐn)?shù)恼Z法排版仪糖;
學(xué)習(xí)一門語言的時候,一定記得不要玩異類語法攒驰,要知其然知其所以然,盡量按照原生玻粪、完整的語法來實現(xiàn)邏輯。這樣做可以減少大部分錯誤的產(chǎn)生伦仍。
開發(fā)規(guī)范參考:
《17條 Swift 最佳實踐規(guī)范》
注釋規(guī)范
最后很洋,還需要了解下swift的注釋方法和規(guī)范,相關(guān)內(nèi)容可網(wǎng)上搜索資料谓苟。注意的是,按照以往的代碼習(xí)慣娜谊,不要在正常代碼的后面加注釋斤讥,swift是不寫末尾的休止符號的湾趾,另外,IOS中的很多方法和屬性都是比較長的字符铛楣,單行書寫注釋會導(dǎo)致文本換行,進(jìn)而影響代碼可讀性簸州,注釋的優(yōu)勢也就無意義了歧譬。
常規(guī)注釋
// 使用雙斜線 加 一個空格 的注釋
let stringMax: Int = 20 // 行尾注釋不利于閱讀
//雙斜線后無空格的話注釋不夠美觀,閱讀略顯擁堵
多行注釋的用法:
/*
使用單個斜線和單個星號作為起始行矢洲,且第一行不寫內(nèi)容缩焦;
余下的行每行左側(cè)縮進(jìn)對齊;
* 也可以使用星號加單個空格對齊
* 注釋的結(jié)尾使用單個星號和單個斜線結(jié)束盖桥,且注釋結(jié)束行不在書寫內(nèi)容
*/
上面的多行注釋是個人覺得比較友好的注釋方法。在xcode中揩徊,注釋的快捷鍵是CMD + /
符合,它會保留行前的縮進(jìn)垃喊。執(zhí)行一次可在添加注釋和取消注釋之間切換袜炕。生成的注釋類似:
// 注釋內(nèi)容
// let fontSize = 14 <- 保留了縮進(jìn)
// 第一行
// 第二行
// 第三行
MARK
xcode中的mark注釋是為了方便查找和導(dǎo)航代碼用的,swift中的寫法變的更為簡單了:
// MARK: 測試標(biāo)示
// 自定義注釋
func ····
// MARK: 標(biāo)簽
// TODO: 待處理
// FIXME: 修復(fù)
需要注意的是乌助,它需使用大寫字母加冒號陌知,通常,mark注釋的上下均需要留出一個空行仆葡,以區(qū)分代碼的上下文。
帶代碼提示效果的注釋
常規(guī)的注釋是不具有代碼提示效果的把篓,但使用三根斜線的注釋則會顯示出代碼提示腰涧,簡單的例子如:
/// RGBA色彩
/// - parameter r: Red紅色
/// - parameter g: Green綠色
/// - parameter b: Blue藍(lán)色
/// - parameter a: Alpha透明度
/// - returns: RGBA色彩
func RGBA(r: CGFloat, g: CGFloat, b: CGFloat, a: CGFloat) -> UIColor {
return UIColor(red: r/255.0, green: g/255.0, blue: b/255.0, alpha: a)
}
在使用的時候會出現(xiàn)提示:
開始學(xué)習(xí)
變量
語法:
var 變量名: 類型 = 變量值
示例:
var myOrigin: Point
var myVar: String = "Hello world!"
var myInt: Int = 49
常量
語法:
let 常量名: 類型 = 常量值
示例:
let myVar: String = "Hello world!"
let myInt: Int = 49
變量引用
語法:
\\(變量名)
示例:
let taskInt: Int: 5
let myString: String = "開始學(xué)習(xí)swift疗锐,這是第\\(taskInt)個任務(wù)"
print( myString )
// 輸出 開始學(xué)習(xí)swift费彼,這是第5個任務(wù)
函數(shù)
語法:
func 函數(shù)名(參數(shù):類型[,參數(shù):類型]) -> 返回類型 {
// 函數(shù)體
}
示例:
// 聲明函數(shù),無返回值 = func 函數(shù)名() -> Void {}
var name: String
func myFunc() {
self.name = "張三"
}
// 聲明函數(shù)简珠,無參數(shù)函數(shù)
func myFunc() -> String {
return "Hello world"
}
// 調(diào)用
let myFuncOutput: String = myFunc()
// 輸出:Hello world
print( myFuncOutput )
// --------------------------
// 聲明函數(shù)虹钮,一個參數(shù)
func myFunc( username: String ) -> String {
return "Your name is \\(username)."
}
// 調(diào)用
let myFuncOutput: String = myFunc( "張三" )
// 輸出:Your name is 張三.
print( myFuncOutput )
// --------------------------
// 聲明函數(shù),多個參數(shù)
func myFunc( username: String, age: Int ) -> String {
return "Your name is \\(username), and age is \\(age)."
}
// 調(diào)用
let myFuncOutput: String = myFunc( "張三", age: 29 )
// 輸出:Your name is 張三, and age is 29.
print( myFuncOutput )
類
swift中有類和結(jié)構(gòu)體的概念祭玉,具體參考:
https://github.com/numbbbbb/the-swift-programming-language-in-chinese/blob/gh-pages/source/chapter2/09_Classes_and_Structures.md。
類的基本格式
class MyClass {
// 變量
let username: String
var age: Int
// 私有變量脱货,外部只讀
private var outputStr: String
// 初始化
// 實例化時都需要指定變量名:MyClass( name: "張三", age: 29 )
init (name: String, age: Int) {
self.username = name
self.age = age
}
// 方法定義
func funcFirst() {
print( )
}
// 帶參數(shù)的方法
func funcSecond( username: String ) {
self.username = username
}
}
類的繼承
類的基本特征是【繼承性】【抽象性】【多態(tài)性】,那繼承性是必須要學(xué)習(xí)的振峻,它直接決定了類的功能和靈活程度。
繼承自某個類烫堤,可使用冒號調(diào)用基類的類名凤价,如:
class Photoshop: Adobe {
// 邏輯實現(xiàn)
}
該部分需要重點學(xué)習(xí)重寫語法,了解類的一些關(guān)鍵字聲明利诺。
參考:Swift學(xué)習(xí)第十七:重載(override)
工程結(jié)構(gòu)設(shè)計
哪怕我們的學(xué)習(xí)只是為了能自己開發(fā)一個小APP,也需要認(rèn)真學(xué)習(xí)和實踐一個優(yōu)秀的項目開發(fā)方案立倍。好的開發(fā)流程和工作目錄可以大大提高我們的工作效率氛改。
《iOS項目的目錄結(jié)構(gòu)和開發(fā)流程》
暫時這么多比伏,慢慢梳理。