swift開發(fā):語言基礎(chǔ)

  • 必要了解
    • 快速索引查看
    • 錯誤查詢
    • 嚴(yán)謹(jǐn)起步
      • 項目命名規(guī)范
      • 文件和聲明的命名規(guī)范
      • 圖片資源的命名規(guī)范
    • 注釋規(guī)范
      • 常規(guī)注釋
      • MARK
      • 帶代碼提示效果的注釋
  • 開始學(xué)習(xí)
    • 數(shù)據(jù)類型
      • 字符串
      • 數(shù)字
      • 數(shù)組
      • 字典
      • 對象
      • 布爾值
    • 變量
    • 常量
    • 變量引用
    • 函數(shù)
    • block
      • 類的基本格式
      • 類的繼承
      • 一個功能完善的類:代理方法、接口方法把曼、枚舉類型
    • 結(jié)構(gòu)體
    • 循環(huán)語句
    • 流程控制
  • 工程結(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>

按下`option`鍵查看相關(guān)的描述

同樣的缀遍,按下command鍵饱须,鼠標(biāo)移動到某個方法或?qū)ο笊希?dāng)前方法或?qū)ο髸優(yōu)樗{(lán)色帶下劃線的可點擊對象,點擊即可進(jìn)入其相關(guān)的代碼頁面锅铅。
按下`command`鍵 當(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);
  • 時刻注意類型衡蚂;
  • 使用 NSLogprint 在控制臺輸出骏庸,前者只能輸出字符串,后者可以輸出任何類型具被;
  • 函數(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ū)分代碼的上下文。

Xcode中的MARK和TODO注釋導(dǎo)航
帶代碼提示效果的注釋

常規(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)提示:

帶代碼提示效果的注釋
按住`option`鍵點擊帶注釋的對象或方法

開始學(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ā)流程》

暫時這么多比伏,慢慢梳理。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末赁项,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子舰攒,更是在濱河造成了極大的恐慌,老刑警劉巖摩窃,帶你破解...
    沈念sama閱讀 221,406評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件猾愿,死亡現(xiàn)場離奇詭異,居然都是意外死亡蒂秘,警方通過查閱死者的電腦和手機(jī)淘太,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,395評論 3 398
  • 文/潘曉璐 我一進(jìn)店門规丽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來撇贺,“玉大人,你說我怎么就攤上這事雄嚣。” “怎么了缓升?”我有些...
    開封第一講書人閱讀 167,815評論 0 360
  • 文/不壞的土叔 我叫張陵蕴轨,是天一觀的道長。 經(jīng)常有香客問我歧寺,道長,這世上最難降的妖魔是什么斜筐? 我笑而不...
    開封第一講書人閱讀 59,537評論 1 296
  • 正文 為了忘掉前任蛀缝,我火速辦了婚禮,結(jié)果婚禮上嗤练,老公的妹妹穿的比我還像新娘。我一直安慰自己煞抬,他們只是感情好构哺,可當(dāng)我...
    茶點故事閱讀 68,536評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著残拐,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蹦骑。 梳的紋絲不亂的頭發(fā)上臀防,一...
    開封第一講書人閱讀 52,184評論 1 308
  • 那天边败,我揣著相機(jī)與錄音捎废,去河邊找鬼。 笑死排截,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的断傲。 我是一名探鬼主播智政,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼垦垂!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起劫拗,我...
    開封第一講書人閱讀 39,668評論 0 276
  • 序言:老撾萬榮一對情侶失蹤矾克,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后聂渊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,212評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,299評論 3 340
  • 正文 我和宋清朗相戀三年饼暑,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片弓叛。...
    茶點故事閱讀 40,438評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡诚纸,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出畦徘,到底是詐尸還是另有隱情抬闯,我是刑警寧澤,帶...
    沈念sama閱讀 36,128評論 5 349
  • 正文 年R本政府宣布睡榆,位于F島的核電站,受9級特大地震影響胀屿,放射性物質(zhì)發(fā)生泄漏碉纳。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,807評論 3 333
  • 文/蒙蒙 一劳曹、第九天 我趴在偏房一處隱蔽的房頂上張望琅摩。 院中可真熱鬧,春花似錦房资、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,279評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至牙肝,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間配椭,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,395評論 1 272
  • 我被黑心中介騙來泰國打工衡楞, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人瘾境。 一個月前我還...
    沈念sama閱讀 48,827評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像寄雀,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子盒犹,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,446評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件沮协、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,118評論 4 61
  • 海卓嫂,無邊無際 卻是沙鷗的向往; 天晨雳,廣闊無垠, 卻是云的向往餐禁; 那我的向往又是什么呢? 曾問過自己無數(shù)個這樣的問題...
    向上居士閱讀 207評論 1 4
  • 你在我青春的記憶里 幸福徘徊 歡笑氧吐,難忘,哀愁 你在我幸福的時光里 笑逐顏開 相擁末盔,相伴,相愛 你讓我幸福滿滿陨舱,矜...
    迎春花阿班閱讀 188評論 3 2
  • 是夜,我夾著根煙走在人潮洶涌的酒吧街心剥,老高和另外兩個女孩子在商量著去哪個酒吧,我低頭看著自己一身的雪白,覺著有些違...
    阿拉丁的小人閱讀 187評論 0 0