淺談swift 4.0中private所發(fā)生的變化
前言
當(dāng)Swift首次引入訪問(wèn)級(jí)別時(shí),對(duì)此進(jìn)行了一些混淆和不解。雖然開(kāi)發(fā)人員對(duì)于添加對(duì)Swift編程語(yǔ)言的訪問(wèn)控制感到興奮,但是private關(guān)鍵字的行為與其他編程語(yǔ)言的行為不同。
之前在swift 3.0的時(shí)候,如果把聲明的變量或方法加上private前綴,那么它就只能在當(dāng)前的class里使用,extension 中也不能使用。改成fileprivate,卻又可以在其他類中實(shí)例化后使用,屬性的作用域就會(huì)更大,可能會(huì)不小心造成屬性的濫用。
所以在Swift 4 中,private 的屬性的作用域擴(kuò)大到了 extension 中,并且被限定在了 struct 和 extension 內(nèi)部,這樣就不需要再改成 fileprivate 了。
Swift4.0到底有哪些新改變呢?
- 字符串String類型更加人性化,多行字符串文字,支持Range,也算集合類型
- 改進(jìn)的private的訪問(wèn)權(quán)限,私有訪問(wèn)修飾符
- 更智能更安全的Key Value Coding 鍵值編碼
- 詞典和集合
- 歸檔和序列化
- 單面范圍
- 通用下標(biāo)
- MutableCollection.swapAt( __ : _ _ )
- 相關(guān)類型限制
- 類和協(xié)議存在
- 限制@objc推論
下面進(jìn)行本文的正文介紹:
上代碼
class ViewController: UIViewController { var test = "" private var test1 = "" fileprivate var test2 = "" override func viewDidLoad() { super.viewDidLoad() testIt() // 之前會(huì)報(bào)錯(cuò) 需要修改為fileprivate } func testForNormal(){ } private func testForPrivate(){ } fileprivate func testForfileprivate(){ } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } } extension ViewController { private func testIt(){ testForPrivate() /// swift 4.0 可以訪問(wèn) 之前不行 } } class other { let a = ViewController() func lalal(){ _ = a.test /// Normal _ = a.test2 /// fileprivate a.testForNormal() /// Normal a.testForfileprivate() /// fileprivate a.testForPrivate() /// 報(bào)錯(cuò) 'testForPrivate' is inaccessible due to 'private' protection level } }
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
swift實(shí)現(xiàn)自動(dòng)輪播圖效果(UIScrollView+UIPageControl+Timer)
這篇文章主要為大家詳細(xì)介紹了swift實(shí)現(xiàn)自動(dòng)輪播圖效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-09-09Swift開(kāi)發(fā)之UITableView狀態(tài)切換效果
這篇文章主要介紹了Swift開(kāi)發(fā)之UITableView狀態(tài)切換效果的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-08-08Swift實(shí)現(xiàn)倒計(jì)時(shí)5秒功能
這篇文章主要為大家詳細(xì)介紹了Swift實(shí)現(xiàn)倒計(jì)時(shí)5秒功能,在“登錄”和“注冊(cè)”頁(yè)面也有相似功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-03-03Swift下使用UICollectionView 實(shí)現(xiàn)長(zhǎng)按拖拽功能
拖拽排序是新聞?lì)惖腁pp可以說(shuō)是必有的交互設(shè)計(jì),如今日頭條,網(wǎng)易新聞等。這篇文章主要介紹了Swift下使用UICollectionView 長(zhǎng)按拖拽功能,需要的朋友可以參考下2017-03-03