又是周五了,週末不要浪,一起學點swift!本週再次為大家帶來了一些swift的小技巧,都是些奇淫巧計,不知道也無妨,但swift最吸引我的一點就是它的簡潔易用。主要內容有:
private(set)
語法
分號的使用
利用string
型別初始化方法簡化uitableviewcell
的reuseidentifier
簡潔的宣告多個變數
壓軸推薦: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()
}複製**
給cell乙個func
dosomething()
}複製**
reuseidentifier
是一件挺麻煩的事情,首先不能瞎起名字,比如let reuseidentifier = "reuse"
。一旦同乙個uitableview
中有兩種或更多cell,事情就比較麻煩了。
這就要求我們為reuseidentifier
賦值是要考慮到字串的具體含義,比如**可能是這樣的:
let reuseidentifier = "tableviewcommentcellindentifer"
複製**
這裡的let reuseidentifier = string(tableviewcell)
複製**
tableviewcell
是自定義的uitableviewcell
的子類,把它傳入字串的建構函式中得到的結果是"tableviewcell",一切顯得那麼和諧簡介。
關於字串初始化函式的規則,可以參考我的這篇文章:你其實真的不懂print("hello,world")
對於一些相互有關聯的變數,相比於在每行中宣告乙個,還有一種更簡潔美觀的方式:
好吧,我承認上乙個tip的實用性不是很強,有點湊數字之嫌,下面重點介紹一些除錯方面的技巧作為補償。var (top, left, width, height) = (0.0, 0.0, 100.0, 50.0)
= width
複製**
勾選最後乙個選項後,程式就不會在斷點處終止了。
其他的幾個選項也很有用處,第乙個表示在什麼情況下才會觸發斷點,第二個選項表示前幾次不觸發斷點。
**執行後的結果是:func
customdebug()
}複製**
如果您執行了demo,還會聽到清脆的「叮」的一聲。(int) $r8 = 9
this
is a message to console
複製**
開發除錯的幾個小技巧
控制面板 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之間,具體看看策略檔案的配置,我因為這個埠問題耽誤了一下午,最...