幾個加速Swift開發的小tip

2021-09-11 10:11:05 字數 2199 閱讀 1214

又是周五了,週末不要浪,一起學點swift!本週再次為大家帶來了一些swift的小技巧,都是些奇淫巧計,不知道也無妨,但swift最吸引我的一點就是它的簡潔易用。主要內容有:

private(set)語法

分號的使用

利用string型別初始化方法簡化uitableviewcellreuseidentifier簡潔的宣告多個變數

壓軸推薦:xcode斷點除錯小技巧

我為這篇部落格製作了乙個demo,您可以去在我的github上clone下來:swifttips,如果覺得有幫助還望給個star以示支援。

出於**安全性的考慮,如果乙個類的屬性不會被其他類使用,那麼可以把它宣告為private。更進一步我們可以使用private(set)關鍵字告訴編譯器,這個類對外可讀但是不可寫,比如:

// in other swift file

struct

person

// in main.swift

// 可以獲取name屬性的值

print(person.name)

// 報錯,不能在privateset.swift檔案外對name屬性賦值

= "newname"

複製**

這個屬性只能在檔案內部被讀寫,即使是在結構體的定義外也可以。但是在別的檔案中就不能對其賦值了。

需要強調的一點是,只有private(set)關鍵字,並沒有private(get)關鍵字。

分號在swift中幾乎退出了歷史舞台,但在某些情況下使用分號也是不錯的選擇。

假設在函式的開頭有乙個guard判斷,如果判斷不成立則退出函式,並輸出一些除錯資訊,過去的版本可以這樣寫:

func

dosomething()

}複製**

如果使用分號,可以簡化**,它把**壓縮在一行語句中,簡潔又不失可讀性:

func

dosomething()

}複製**

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

這就要求我們為reuseidentifier賦值是要考慮到字串的具體含義,比如**可能是這樣的:

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)

= width

複製**

好吧,我承認上乙個tip的實用性不是很強,有點湊數字之嫌,下面重點介紹一些除錯方面的技巧作為補償。

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

其他的幾個選項也很有用處,第乙個表示在什麼情況下才會觸發斷點,第二個選項表示前幾次不觸發斷點。

func

customdebug()

}複製**

**執行後的結果是:

(int) $r8 = 9

this

is a message to console

複製**

如果您執行了demo,還會聽到清脆的「叮」的一聲。

開發除錯的幾個小技巧

控制面板 network filter圖示 is running 重新整理監控的頁面 is running 還在請求中的介面 pending 控制面板 elements 右擊選中的dom節點 scroll into view 控制面板 setting圖示 devices add custom dev...

Silverlight開發中遇到的幾個小問題

1,程式發布時遇到錯誤 可能引發此問題的原因 c windows microsoft.net framework v4.0.30319 aspnet regiis.exe iru 即可 2,與socket進行通訊時注意埠在4502 4532之間,具體看看策略檔案的配置,我因為這個埠問題耽誤了一下午,...

Silverlight開發中遇到的幾個小問題

1,程式發布時遇到錯誤 可能引發此問題的原因 c windows microsoft.net framework v4.0.30319 aspnet regiis.exe iru 即可2,與socket進行通訊時注意埠在4502 4532之間,具體看看策略檔案的配置,我因為這個埠問題耽誤了一下午,最...