最近的專案是使用swift進行的開發,在開發過程中,有一些東西和oc是不太一樣的,需要特別的注意,這裡也就簡單的介紹和記錄一下。
在oc中的單例模式一般都是使用dispatch_once
來實現的,可是在swift4中,該方法已經被廢棄,也就是說單例模式的實現和之前不再一樣。在swift中,單例的實現是通過靜態成員和let
關鍵字來實現的,具體**如下:
class classa
classa.default
//用來訪問單例物件
可以看到,在使用default
的時候加了``
符號,這是由於default
是保留關鍵字,如果使用其他名字,如shared
,則直接使用變數名即可。
optionalvalue可以說是swift的標誌了,只要知道swift的人,都知道swift語言中的?
和!
,他們具體的含義,這裡無需多說,只是要說,如果類成員屬性的話,一定要選好型別,還有就是如果定義成了!
型別,注意使用之前一定要賦值,因為編譯器不會進行檢查。
if let
,還有就是guard let else
,其實都是乙個意思,就是if let a = b, let c = a.func()
,如果b
是乙個optionvalue,那麼當值為nil
時,條件不成立;,
的作用類似於&&
,但是不能使用&&
,因為let
語句並沒有返回值。還有一種情況,就是if var a = b
也是可以使用的,和if let
含義相同。
這個就是乙個簡單的說明,在函式的上方加上這個修飾器,在呼叫的時候,可以忽略返回值,如果不新增,那麼在呼叫處如果沒有使用返回值,xcode會進行告警。
swift中沒有了屬性的strong/assign/copy之類的修飾符,但是weak還是存在的,所以這裡要注意一下。swift中class
物件的引用預設都是強引用,所以也會存在有迴圈引用的問題,這個時候,就需要對屬性新增weak
修飾符,weak
修飾的屬性是弱引用,這樣就可以避免迴圈引用了。
如果需要在closure中弱引用self
,那麼可以在引數宣告的地方新增[weak self]
,然後closure中的self就是弱引用了,不過型別也變成了optionalvalue,因為弱引用self
,外部self
是有可能被釋放的,這裡需要注意一下。
由於swift支援了對protocol
的函式新增預設實現,所以很多公有基礎類就不再需要了,而是可以換成protocol
,這樣可以變相的實現多繼承,特別是可以要求部分方法在類中強制實現,部分方法使用預設實現。
當然,也不是所有的類繼承都適合轉換為protocol
+extension
方式,如果需要有儲存型別的屬性,那麼還是使用公共基模擬較好。
命名空間是乙個在oc中不存在的概念,簡單的說,就是引入framework
的類(或方法),可以在前面加上模組名稱,來避免和本地定義的類(或方法)重名。
如引入alamofire
中的方法request
,可以使用**almafire.request
來呼叫,避免和本地定義的request
方法重名導致出現錯誤;當然,如果本地沒有定義request
方法,也可以直接呼叫request
來訪問該方法。
暫時就先總結了這麼多,後續有的話再繼續講解。
Swift語法注意點(一)
1.字元 字串也能使用區間運算子,但是不能用在for in中 2.函式中形參是let,也只能是let 3.乙個函式最多只能有1個可變引數 4.緊跟在可變引數後邊的引數不能省略引數標籤 5.可變引數不能標記為inout 6.inout引數不能有預設值,並且inout引數傳入的必須是可以被多次賦值的 7...
web開發注意的點(一)
1.檢視本機ip 在cmd下輸入ipconfig all,會出現一些配置資訊 其中ipv4就是你的本機ip。如果要其他人訪問你的本地專案,只需要讓其他人輸入的url為 ip 8080即可。2.檢視所有被占用的埠 netstat ano 3.當我們使用myeclipse和idea進行編碼工作時,有的時...
CSS遇到的一些注意點
vh 也就是 viewpoint height 作用是設定高度跟螢幕一樣,寬度不用設定,自適應 vh 就是當前整塊螢幕可視高度的1 也就是說 height 100vh 相當於 height 100 但是當元素沒有內容時候,設定height 100 該元素不會被撐開,此時高度為0,但是設定height...