關於Alamofire Manager單例的思考

2021-12-29 19:43:37 字數 965 閱讀 8297

今天跑到大學裡來看原始碼,剛開學就有好多同學上自習,好久沒來過大學了,還是大學裡安靜。

今天看了一點alamofire的原始碼,其中manager的單例如下:

public static let sharedinstance: manager = ()

上面的**中使用public static let 定義了單例變數sharedinstance。看到這個單例我首先想到的是這樣寫然後將init方法設定成private的,就能夠實現單例了。但是看了一下原始碼,原始碼中的init方法竟然是public的,後來自己給解釋了一下,可能是作者給使用者留了建立自己例項的入口。但是想想這樣有點違背單例的思想了。

補充一點,在oc中建立單例一般如下:

+ (accountmanager *)sharedmanager

);

return sharedaccountmanagerinstance;

}網上還有判斷sharedaccountmanagerinstance是否為空,然後建立的,但是這種方式建立的單例,在多執行緒的情況下,容易出現問題。具體問題可以百度。

下面想說的是對於型別方法及屬性的修飾符:static和class關鍵字。首先列出來一篇文章,看完了這篇文章之後再回來看我寫的後面。這篇文章是王巍寫的,質量挺高的,位址:

在王巍的文章中詳細的介紹了static和class的使用情況。簡單的概括就是struct、enum中使用static,class中儲存屬性使用static、計算屬性和方法使用class。我自己做測試了在class中計算屬性和方法使用也可以使用static,所以如果不好記,直接都使用static也可以。

轉過來看一下上面alamofire**中的共享例項的宣告,第一次看到我以為是乙個計算屬性,因為後面跟著好多**。但是仔細一看,其實是乙個儲存屬性,在等於號後面其實是乙個尾隨閉包,然後使用括號,馬上獲得了閉包返回的值,然後賦值給了該儲存屬性。(對於這個可能說法不對,我原來看過這種情況叫什麼,可能記錯了,如果錯了麻煩給我指出)。

關於程式關於世界

首先,在學了1年多的軟體設計的基礎上,問下自己 程式是什麼?業務需求是什麼?程式有什麼用?什麼是演算法?什麼是資料庫?或許每個人的理解不同,會給出不同的答案。那麼自己的理解 程式是乙個讓計算機工作的流程,在程式寫好之後,計算機就會按照,程式設計師定義好流程在執行。其實很多時候,乙個程式的好壞,在於乙...

關於血液關於軟體

1 自然沉降法 將血袋垂直吊掛於4 2 冰箱內,使紅細胞自然下沉1 3d,或將血袋呈70 80 角立於冰箱,需用時,用一次性分漿器分出血漿,制得濃縮紅細胞。2 洗滌法 一般用生理鹽水反覆洗滌3 6次。經洗滌的紅細胞,除白細胞和血小板減少外,血漿蛋白也極少,紅細胞中殘存的血漿蛋白含量約為原總蛋白的1 ...

關於冷漠,關於愛情

我不知道為什麼今天又莫名其妙開始思考愛情這件事,隨之就解決了我一直無法面對冷漠這件事 被冷漠是我始終無法消化的一件事,每當遇見冷漠時,我總會覺得就像一團火把自己燒得面目全非,但對方卻毫無傷害。但我突然懂了,遇到冷漠時,體面的離開即可 在乎你的人一定會在你離開後,找到你跟你解釋為什麼 連解釋都來不及,...