六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

Swift中的Access Control權(quán)限控制介紹

[摘要]這篇文章主要介紹了Swift中的Access Control權(quán)限控制介紹,本文講解了private、internal、public三個關(guān)鍵字的使用,需要的朋友可以參考下如果您之前沒有接觸過權(quán)限控制...

   這篇文章主要介紹了Swift中的Access Control權(quán)限控制介紹,本文講解了private、internal、public三個關(guān)鍵字的使用,需要的朋友可以參考下

  如果您之前沒有接觸過權(quán)限控制,先來聽一個小故事:

  小明是五道口工業(yè)學院的一個大一新生,最近他有點煩惱,因為同屋經(jīng)常用他的熱水壺,好像那是自己家的一樣,可是礙于同學情面,又不好意思說。直到有一天,他和學姐小K吐槽。

  學姐聽了之后,說:大學集體生活里面,大部分東西都是默認室友可以共用的。如果你不想別人拿,我可以幫你做封印,只要打上private標記,它們就看不到你的東西,更加用不了你的東西了。

  小明說哇靠學姐你還會妖法......

  Swift語言從Xcode 6 beta 5版本起,加入了對權(quán)限控制(Access Control)的支持。其實權(quán)限控制和小明的物品一樣,你可以設(shè)定水壺是只有自己能用,還是只有宿舍里的人能用,還是全校都可以用。

  從此以后,你可以好像神盾局局長一樣,完全掌控自己的代碼塊的”保密級別“,哪些是只能在本文件引用,哪些能用在整個項目里,你還可以發(fā)揮大愛精神,把它開源成只要導入你的框架,大家都可以使用的API。

  這三種權(quán)限分別是:

  #####private 私有的

  在哪里寫的,就在哪里用。無論是類、變量、常量還是函數(shù),一旦被標記為私有的,就只能在定義他們的源文件里使用,不能為別的文件所用。

  #####internal 內(nèi)部的

  標記為internal的代碼塊,在整個應用(App bundle)或者框架(framework)的范圍內(nèi)都是可以訪問的。

  #####public 公開的

  標記為public的代碼塊一般用來建立API,這是最開放的權(quán)限,使得任何人只要導入這個模塊,都可以訪問使用。

  如果要把所有的愛加上一個期限,噢不,是給所有的代碼塊都標記上權(quán)限,不累死才怪。還好swift里面所有代碼實體的默認權(quán)限,都是最常用的internal。所以當你開發(fā)自己的App時,可能完全不用管權(quán)限控制的事情。

  但當你需要寫一個公開API的時候,就必須對里面的代碼塊進行“隱身對其可見”的public標記,要么其他人是用不到的。

  Private(私有級別)的權(quán)限最嚴格,它可以用來隱藏某些功能的細節(jié)實現(xiàn)方式。合理構(gòu)筑你的代碼,你就可以安全地使用extension和高級功能,又不把它們暴露給項目內(nèi)的其他文件。

  除了可以給整個聲明設(shè)權(quán)限,Swift還允許大家在需要的時候,把某個屬性(property)的取值權(quán)限比賦值權(quán)限設(shè)得更加開放。

  #####舉個例子:

   代碼如下:

  public class ListItem {

  // ListItem這個類,有兩個公開的屬性

  public var text: String

  public var isComplete: Bool

  // 下面的代碼表示把變量UUID的賦值權(quán)限設(shè)為private,對整個app可讀,但值只能在本文件里寫入

  private(set) var UUID: NSUUID

  public init(text: String, completed: Bool, UUID: NSUUID) {

  self.text = text

  self.isComplete = completed

  self.UUID = UUID

  }

  // 這段沒有特別標記權(quán)限,因此屬于默認的internal級別。在框架目標內(nèi)可用,但對于其他目標不可用

  func refreshIdentity() {

  self.UUID = NSUUID()

  }

  public override func isEqual(object: AnyObject?) -> Bool {

  if let item = object as? ListItem {

  return self.UUID == item.UUID

  }

  return false

  }

  }

  當我們使用Objective-C和Swift混合開發(fā)時,需要注意:

  ●如果你在寫的是一個應用,Xcode會生成一個頭文件來保證兩者的可互訪性,而這個生成的頭文件會包含public和internal級別的聲明。

  ●如果你的最終產(chǎn)品是一個Swift框架,頭文件里只會出現(xiàn)標記為public級別的聲明。(因為框架的頭文件,屬于公開的Objective-C接口的一部分,只有public部分對Objective-C可用。)

  雖然Swift不推薦大家傳播和使用第三方的框架,但對于建立和分享源文件形式的框架是支持的。對于需要寫框架,方便應用與多個項目的開發(fā)者來說,要記得把API標記為public級別。

  如果您想了解更多關(guān)于權(quán)限控制的內(nèi)容,可以查看蘋果官方最新的《The Swift Language》和《Using Swift with Cocoa and Objective-C》指南,

  這兩本指南在iBooks里面可以下載更新喔。


Microsoft Access在很多地方得到廣泛使用,例如小型企業(yè),大公司的部門。




主站蜘蛛池模板: 青青视频免费观看 | 色综合久久天天综合 | 青娱乐国产在线 | 五月天久久综合 | 亚洲国产一成人久久精品 | 亚洲成a人片在线观看www | 在线亚洲精品防屏蔽 | 啪啪国产| 中文国产成人精品久久一 | 日韩三级视频 | 啪啪五月| 自拍一区在线 | 亚洲啪啪网站 | 日本噜噜影院 | 日本丰满bbb | 欧美一级黄色片视频 | 亚洲福利三区 | 日日摸夜夜欧美一区二区 | 日韩免费大片 | 日韩成人免费观看 | 天干夜天天夜天干天 | 日本强不卡在线观看 | 青青国产视频 | 欧美午夜在线视频 | 午夜草草 | 欧美一级录像 | 奇米在线影视一区二区三 | 午夜影院美女 | 夜夜偷天天爽夜夜爱 | 天天射色综合 | 天天干夜夜爽 | 日韩天天操 | 一级一片一a一片 | 中文字幕欧美在线 | 色妞网欧美 | 又粗又硬又大又爽免费观看 | 色站综合| 色yeye免费视频免费看 | 日韩免费在线观看视频 | 下克上动漫第一集 | 欧美一级二级三级视频 |