幾個加速Swift開發的小tip

又是週五了,週末不要浪,一塊兒學點Swift!本週再次爲你們帶來了一些Swift的小技巧,都是些奇淫巧計,不知道也無妨,但Swift最吸引個人一點就是它的簡潔易用。主要內容有:git

  1. private(set)語法
  2. 分號的使用
  3. 利用String類型初始化方法簡化UITableViewCellreuseIdentifier
  4. 簡潔的聲明多個變量
  5. 壓軸推薦:Xcode斷點調試小技巧

我爲這篇博客製做了一個demo,您能夠去在個人github上clone下來:SwiftTips,若是以爲有幫助還望給個star以示支持。github

private(set)

出於代碼安全性的考慮,若是一個類的屬性不會被其餘類使用,那麼能夠把它聲明爲private。更進一步咱們可使用private(set)關鍵字告訴編譯器,這個類對外可讀可是不可寫,好比:swift

// In other swift file
struct Person {
private(set) var name = "Unknown"
}

// In main.swift
// 能夠獲取name屬性的值
print(person.name)

// 報錯,不能在PrivateSet.swift文件外對name屬性賦值
//person.name = "newName"
複製代碼

這個屬性只能在文件內部被讀寫,即便是在結構體的定義外也能夠。可是在別的文件中就不能對其賦值了。安全

須要強調的一點是,只有private(set)關鍵字,並無private(get)關鍵字。函數

利用好分號

分號在Swift中幾乎退出了歷史舞臺,但在某些狀況下使用分號也是不錯的選擇。學習

假設在函數的開頭有一個guard判斷,若是判斷不成立則退出函數,並輸出一些調試信息,過去的版本能夠這樣寫:ui

func doSomething() {
let error: AnyObject? = nil
guard error == nil
else {
print("Error information")
return
}
}
複製代碼

若是使用分號,能夠簡化代碼,它把代碼壓縮在一行語句中,簡潔又不失可讀性:spa

func doSomething() {
let error: AnyObject? = nil
guard error == nil else { print("Error information"); return }
}
複製代碼

reuseIdentifier

給cell一個reuseIdentifier是一件挺麻煩的事情,首先不能瞎起名字,好比let reuseIdentifier = "reuse"。一旦同一個UITableView中有兩種或更多cell,事情就比較麻煩了。調試

這就要求咱們爲reuseIdentifier賦值是要考慮到字符串的具體含義,好比代碼多是這樣的:code

let reuseIdentifier = "TableViewCommentCellIndentifer"
複製代碼

做爲一個喜歡偷懶的人,爲了節省起名字以及輸入這些字符串的時間,咱們徹底能夠這樣寫:

let reuseIdentifier = String(TableViewCell)
複製代碼

這裏的TableViewCell是自定義的UITableViewCell的子類,把它傳入字符串的構造函數中獲得的結果是"TableViewCell",一切顯得那麼和諧簡介。

關於字符串初始化函數的規則,能夠參考個人這篇文章:你其實真的不懂print("Hello,world")

簡潔聲明多個變量

對於一些相互有關聯的變量,相比於在每行中聲明一個,還有一種更簡潔美觀的方式:

var (top, left, width, height) = (0.0, 0.0, 100.0, 50.0)
//rect.width = width
複製代碼

Xcode斷點調試小技巧

好吧,我認可上一個tip的實用性不是很強,有點湊數字之嫌,下面重點介紹一些調試方面的技巧做爲補償。

可能不少人都知道使用斷點可以大幅度提升開發效率,其實Xcode斷點還有更多的功能值的發掘。好比咱們能夠在觸發斷點時不終止程序運行(若是不須要單步調試的話):

斷點處繼續運行

勾選最後一個選項後,程序就不會在斷點處終止了。

其餘的幾個選項也頗有用處,第一個表示在什麼狀況下才會觸發斷點,第二個選項表示前幾回不觸發斷點。

Action選項中,咱們能夠選擇觸發斷點時的執行事件,好比這裏我加入了播放聲音,以及向控制檯打印字符串"This is a message to console",同時還會調用調試命令p i,表示輸出i的值:

func customDebug() {
for i in 1..<10 {
// 這裏加斷點
}
}
複製代碼

代碼運行後的結果是:

(Int) $R8 = 9
This is a message to console
複製代碼

若是您運行了demo,還會聽到清脆的「叮」的一聲。

One More Thing

更多好文敬請關注我和@Martin_wjl共同維護的專題——每週學點Swift,每週五更新幾篇精選教程,輕鬆學習Swift。

相關文章
相關標籤/搜索