Swift基礎(chǔ)-自動(dòng)引用計(jì)數(shù)

工作機(jī)制

  • Swift和OC一樣,采用自動(dòng)引用計(jì)數(shù)來管理內(nèi)容
    • 當(dāng)有一個(gè)強(qiáng)引用指向某一個(gè)動(dòng)向時(shí),該對(duì)象的引用計(jì)數(shù)會(huì)自動(dòng)+1
    • 當(dāng)該強(qiáng)引用消失時(shí),引用計(jì)數(shù)會(huì)自動(dòng)-1
    • 當(dāng)引用計(jì)數(shù)為0時(shí),該對(duì)象會(huì)被銷毀

循環(huán)引用

  • 在通常情況下,ARC是會(huì)自動(dòng)幫助我們管理內(nèi)存的
  • 但是在開發(fā)中我們經(jīng)常會(huì)出現(xiàn)循環(huán)引用的問題,比如下面的示例
    • Student對(duì)Book對(duì)象有一個(gè)強(qiáng)引用
    • 而Book對(duì)Student有一個(gè)強(qiáng)引用
    • 在兩個(gè)對(duì)象都指向nil時(shí),依然不會(huì)被銷毀,就形成了循環(huán)引用
// 1.創(chuàng)建類
class Student {
    var book : Book?

    deinit {
        print("Student -- deinit")
    }
}

class Book {
    var owner : Student?

    deinit {
        print("Book -- deinit")
    }
}

// 2.創(chuàng)建對(duì)象
var stu : Student? = Student()
var book : Book? = Book()

// 3.相互引用
stu?.book = book
book?.owner = stu

// 4.對(duì)象置nil
stu = nil
book = nil
  • 解決方案
    • swift提供了兩種解決方案
      • weak : 和OC中的__weak一樣是一個(gè)弱引用.當(dāng)指向的對(duì)象銷毀時(shí),會(huì)自動(dòng)將指針指向nil
      • unowned : 和OC中的__unsafe_unretained.當(dāng)對(duì)象銷毀時(shí)依然指向原來的位置(容易引起野指針)
// 1.創(chuàng)建類
class Student {
    weak var book : Book?
    // unowned var book : Book = Book()

    deinit {
        print("Student -- deinit")
    }
}

class Book {
    var owner : Student?

    deinit {
        print("Book -- deinit")
    }
}

// 2.創(chuàng)建對(duì)象
var stu : Student? = Student()
var book : Book? = Book()

// 3.相互引用
stu?.book = book!
book?.owner = stu

// 4.對(duì)象置nil
stu = nil
book = nil
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末晰赞,一起剝皮案震驚了整個(gè)濱河市饼丘,隨后出現(xiàn)的幾起案子浅辙,更是在濱河造成了極大的恐慌给郊,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,185評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡肺蔚,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門儡羔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來宣羊,“玉大人,你說我怎么就攤上這事汰蜘〕鸱耄” “怎么了?”我有些...
    開封第一講書人閱讀 163,524評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵族操,是天一觀的道長(zhǎng)苛坚。 經(jīng)常有香客問我,道長(zhǎng)色难,這世上最難降的妖魔是什么泼舱? 我笑而不...
    開封第一講書人閱讀 58,339評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮枷莉,結(jié)果婚禮上娇昙,老公的妹妹穿的比我還像新娘。我一直安慰自己笤妙,他們只是感情好冒掌,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,387評(píng)論 6 391
  • 文/花漫 我一把揭開白布噪裕。 她就那樣靜靜地躺著,像睡著了一般股毫。 火紅的嫁衣襯著肌膚如雪州疾。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,287評(píng)論 1 301
  • 那天皇拣,我揣著相機(jī)與錄音,去河邊找鬼薄嫡。 笑死氧急,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的毫深。 我是一名探鬼主播吩坝,決...
    沈念sama閱讀 40,130評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼哑蔫!你這毒婦竟也來了钉寝?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,985評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤闸迷,失蹤者是張志新(化名)和其女友劉穎嵌纲,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體腥沽,經(jīng)...
    沈念sama閱讀 45,420評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡逮走,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,617評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了今阳。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片师溅。...
    茶點(diǎn)故事閱讀 39,779評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖盾舌,靈堂內(nèi)的尸體忽然破棺而出墓臭,到底是詐尸還是另有隱情,我是刑警寧澤妖谴,帶...
    沈念sama閱讀 35,477評(píng)論 5 345
  • 正文 年R本政府宣布窿锉,位于F島的核電站,受9級(jí)特大地震影響窖维,放射性物質(zhì)發(fā)生泄漏榆综。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,088評(píng)論 3 328
  • 文/蒙蒙 一铸史、第九天 我趴在偏房一處隱蔽的房頂上張望鼻疮。 院中可真熱鬧,春花似錦琳轿、人聲如沸判沟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽挪哄。三九已至吧秕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間迹炼,已是汗流浹背砸彬。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留斯入,地道東北人砂碉。 一個(gè)月前我還...
    沈念sama閱讀 47,876評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像刻两,于是被迫代替她去往敵國(guó)和親增蹭。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,700評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容