亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

弱引用和無引用引用之間有什么區別?

弱引用和無引用引用之間有什么區別?

白板的微信 2019-08-29 16:34:10
弱引用和無引用引用之間有什么區別?斯威夫特有:強引用弱參考無主參考文獻無主參考如何與弱參考不同?什么時候使用無主參考安全?無主引用是否存在安全風險,如C / C ++中的懸空指針?
查看完整描述

2 回答

?
慕哥9229398

TA貢獻1877條經驗 獲得超6個贊

Q1。“無主參考”與“弱參考”有何不同?

弱參考:

弱引用是一種引用,它不會強制保留它引用的實例,因此不會阻止ARC處理引用的實例。因為弱引用被允許具有“無值”,所以必須將每個弱引用聲明為具有可選類型。(Apple Docs)

無主參考:

與弱引用一樣,無主引用并不會強烈保留它所引用的實例。然而,與弱引用不同,假定無主引用始終具有值。因此,無主引用始終定義為非可選類型。(Apple Docs)

何時使用每個:

只要對該引用有效,就使用弱引用在其生命周期的某個時刻變為nil。相反,當您知道在初始化期間設置引用后永遠不會為nil時,請使用無主引用。(Apple Docs)


Q2。什么時候使用“無主參考”是安全的?

如上所述,假定無主參考始終具有值。因此,只有在確定引用永遠不會為零時才應使用它。Apple Docs通過以下示例說明了無主引用的用例。

假設我們有兩個類CustomerCreditCard??蛻艨梢栽跊]有信用卡的情況下存在,但沒有客戶就不會存在信用卡,即可以假設信用卡將始終擁有客戶。所以,他們應該有以下關系:

class Customer {
    var card: CreditCard?}class CreditCard {
    unowned let customer: Customer}

Q3。“無主參考”是否引用了C / C ++中的“懸空指針”等安全風險

我不這么認為。

由于無主引用只是保證具有值的弱引用,因此它不應該以任何方式存在安全風險。但是,如果您嘗試在其引用的實例被取消分配后訪問無主引用,則會觸發運行時錯誤,應用程序將崩潰。

這是我看到的唯一風險。

鏈接到Apple Docs


查看完整回答
反對 回復 2019-08-29
  • 2 回答
  • 0 關注
  • 804 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號