亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Swift > 正文

swift中AnyObject和Any的介紹與區別詳解

2020-03-09 17:42:47
字體:
來源:轉載
供稿:網友

誕生

swift/133186.html">swift/285283.html">swift 作為新起步的語言,必然拋不掉一些歷史遺留包袱。用過 Objective-C 的同學肯定知道有一種叫做 id 的類型。他可以表示任意類的實例,編譯器不會對其類型聲明的變量進行檢查。在用 swift 做 app 開發時,為了能適配 Cocoa 架構,AnyObject 就誕生了。它可以代表任意 class 類型(用來替代OC中的 id)。

區別

在 Swift 中編譯器會對 AnyObject 實例的方法調用做檢查,還會返回一個 Optional 的結果。

原理

public typealias AnyObject// The protocol to which all class types implicitly conform.

由定義就可以看出它就是一個接口,所有的 class 都隱式地實現了這個借口。所以 AnyObject 只適用于 class 類型。但是 swift 中的基本類型都是 struct 類型,并不能用 AnyObject 來表示。所以官方又提出了一個更特殊的 Any 類型,它除了 class 以外還可以表示其他類型,可以說是任意類型(包括 struct,enum,func等)。

import UIKitclass ViewController: UIViewController { override func viewDidLoad() {  super.viewDidLoad()    let swiftArr = ["a", "b", "c"]  let swiftStr = "hello world"    var array = [AnyObject]()  array.append(swiftArr)  array.append(swiftStr) }}

這種寫法是會報錯的,String 不符合預期類型 AnyObject,并且系統提示了我們怎么修改:

Argument type 'String' does not conform to expected type 'AnyObject' Insert ' as AnyObject'

按提示修改后:

import UIKitclass ViewController: UIViewController { override func viewDidLoad() {  super.viewDidLoad()    let swiftArr = ["a", "b", "c"]  let swiftStr = "hello world"    var array = [AnyObject]()  array.append(swiftArr as AnyObject)  array.append(swiftStr as AnyObject) }}

這里我們顯示的將 swift 中的 String 和 Array 轉成了 AnyObject。實際上 array 里面的元素已經變成了 NSString 和 NSArray 了。

swift,any,anyobject,轉換

當然我們還有另外的方式解決此問題,用 Any。

import UIKitclass ViewController: UIViewController { override func viewDidLoad() {  super.viewDidLoad()    let swiftArr = ["a", "b", "c"]  let swiftStr = "hello world"    var array = [Any]()  array.append(swiftArr)  array.append(swiftStr) }}

可以看到結果全部是 swift 中的原生類型:

swift,any,anyobject,轉換

注意

  • 只是用 swift 類型而不轉為 Cocoa 類型是會提升性能的,所以我們最好還是使用原生類型。
  • 在 OC 和 swift 混編的工程中使用 AnyObject 和 Any 是在所難免的,但我們要盡量避免使用這兩者,swift 中最好明確地指出確定的類型。
  • 如果我們的代碼經常用到這兩者,意味著代碼可能在結構和設計上存在問題。

下面來舉例說明:

1.Any -- 比如我們經常使用的參數parameters

parameters = ["appId":"123456", "timestamp":203428394820,"version":"1.0", "appAuthToken":"7D8SF7D8VS8987D67687", "bizContent":["pageStart":1, "pageSize": "10","isTrue":true]] as [String : Any]

這里面包括了String,Int,Bool,Dictionnary四種類型的參數,最后使用as [String : Any] ,就是說,parameters的key是String類型,但是value值可以是任何類型。

2.AnyObject -- 在做網絡請求的時候

typealias Complicate = (AnyObject) ->Void//請求回調var complicate : Complicate?func request(type:RequestType, URLString:String, parameters:[String : AnyObject], complicate:@escaping Complicate) -> Void {CK().maskShow()switch type {case .requestTypeGet:Alamofire.request(URLString, method: .get, parameters: parameters, encoding: JSONEncoding.default, headers: nil).validate().responseJSON { response inCK().dismissMask()switch response.result{case .success:if let value = response.result.value{//把得到的JSON數據轉為字典complicate(value as AnyObject)}case .failure: ()DMCAlertCenter.default().postAlert(withMessage: "網絡請求失敗")return}}

可以看到,在返回的json進行回調的時候,由于value是JSON類型的實例,complicate(value as AnyObject), 就是將value作為AnyObject傳值出去。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到swift教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人免费福利视频| 欧美xxxx综合视频| 日韩精品中文字幕视频在线| 中文字幕精品影院| 久久琪琪电影院| 精品免费在线视频| 欧美极品xxxx| 欧美第一黄网免费网站| 亚洲网站在线看| 激情懂色av一区av二区av| 亚洲一区美女视频在线观看免费| 大胆人体色综合| 欧美性高潮床叫视频| 中文字幕日韩视频| 揄拍成人国产精品视频| 国产精品欧美在线| 91福利视频网| 成人福利网站在线观看| 九九九久久久久久| 亚洲欧美视频在线| 午夜精品一区二区三区av| 欧美高清视频免费观看| 亚洲一区二区三区视频播放| 亚洲黄色片网站| 久久人人爽国产| 日本国产欧美一区二区三区| 午夜精品久久久久久久男人的天堂| 97国产精品久久| 美日韩精品免费观看视频| 亚洲精品第一国产综合精品| 亚洲人成绝费网站色www| 亚洲国产精品久久久| 亚洲精品免费一区二区三区| 成人精品福利视频| 91精品国产91久久久久久久久| 亚洲曰本av电影| 69久久夜色精品国产69| 黑人巨大精品欧美一区二区三区| 色偷偷亚洲男人天堂| 国产成人精品网站| 日韩av123| 欧美性猛交xxxx偷拍洗澡| 国产精品入口福利| 亚洲成人在线视频播放| 欧美一级淫片videoshd| 亚洲精品乱码久久久久久金桔影视| 精品国内亚洲在观看18黄| 亚洲国产99精品国自产| 18久久久久久| 亚洲国产精品女人久久久| 九九热精品视频| 成人h视频在线观看播放| 久久久成人精品| 精品久久久久久中文字幕| 成人在线小视频| 欧美极品美女电影一区| 久久高清视频免费| 亚洲人成在线免费观看| 成人性教育视频在线观看| 97在线观看免费| www.日韩.com| 国产日韩欧美视频在线| 久久香蕉频线观| 欧美激情久久久久| 久久精品国产2020观看福利| 久久人91精品久久久久久不卡| 日韩欧美国产成人| 国产成人精品综合| 欧美激情精品久久久久久久变态| 久久精品国产96久久久香蕉| 性欧美在线看片a免费观看| 欧美重口另类videos人妖| 国产精品草莓在线免费观看| 国产精品扒开腿做爽爽爽的视频| 国产精品海角社区在线观看| 欧美另类第一页| 国产在线高清精品| 97精品国产97久久久久久| 欧美激情免费视频| 国产精品视频在线播放| 欧美在线www| 91精品国产综合久久香蕉的用户体验| 国产成人精品综合久久久| 91久久久久久国产精品| 97久久精品人人澡人人爽缅北| 亚洲高清色综合| 日韩激情av在线播放| 成人性生交大片免费观看嘿嘿视频| 亚洲欧美一区二区三区久久| 中文字幕日韩专区| 日韩专区在线播放| 久久影视电视剧免费网站清宫辞电视| 欧美性猛交xxxx乱大交蜜桃| 日本免费在线精品| 自拍偷拍亚洲欧美| 久久综合久久88| 久久久久久国产精品久久| 亚洲精品av在线播放| 亚洲成人久久电影| 亚洲一区二区免费| 一夜七次郎国产精品亚洲| 一区二区三区视频免费在线观看| 国产精品揄拍500视频| 欧美做受高潮1| 91亚洲国产成人久久精品网站| 欧美成人精品激情在线观看| 国产精品久久久久久av福利软件| 国产在线视频91| 欧美激情第三页| 成人免费在线网址| 美女视频久久黄| 久热在线中文字幕色999舞| 亚洲一区999| 亚洲男人天堂2023| 国产97在线播放| 久久久久久久久久久久久久久久久久av| 亚洲欧洲日本专区| 色老头一区二区三区在线观看| 亚洲精品在线91| 精品福利视频导航| 中文字幕久精品免费视频| 日韩中文字幕在线视频播放| 欧美成人午夜视频| 亚洲综合自拍一区| 成人午夜在线观看| 揄拍成人国产精品视频| 亚洲综合视频1区| 国产精品视频精品| 久久久久久亚洲精品不卡| 欧美在线视频a| 91sao在线观看国产| 国产精品亚洲美女av网站| 国产精品久久久久久久久久三级| 奇米成人av国产一区二区三区| 国产精品在线看| 8x海外华人永久免费日韩内陆视频| 欧美疯狂性受xxxxx另类| 青青久久av北条麻妃海外网| 欧美日韩福利视频| 啊v视频在线一区二区三区| 久热在线中文字幕色999舞| 人人爽久久涩噜噜噜网站| 亚洲视频在线播放| 亚洲最大福利视频网站| 国产精品露脸自拍| 亚洲视频在线观看视频| 亚洲欧美日韩精品久久奇米色影视| 亚洲裸体xxxx| 久久精品国产精品| 国产精品美女免费视频| 久久99久久99精品中文字幕| 97精品一区二区三区| 亚洲性夜色噜噜噜7777| 亚洲精品98久久久久久中文字幕| 欧美日韩国产999| 精品国产91久久久久久| 中文字幕亚洲自拍| 亚洲一区二区三区乱码aⅴ蜜桃女| 久久av红桃一区二区小说| 在线观看视频99| 最近2019中文字幕大全第二页| 亚洲男人天堂九九视频| www.日韩av.com| 国产精品精品久久久|