內(nèi)存管理

Swift內(nèi)存管理:
管理引用類型的內(nèi)存, 不會(huì)管理值類型, 值類型不需要管理
內(nèi)存管理原則: 當(dāng)沒有任何強(qiáng)引用指向?qū)ο? 系統(tǒng)會(huì)自動(dòng)銷毀對象(默認(rèn)情況下所有的引用都是強(qiáng)引用),如果做到該原則: ARC

class Person {
    var name:String
    init(name:String){
    self.name = name
}
deinit{
    print("deinit")
}
}
var p:Person? = Person(name: "lnj")
//p = nil

weak弱引用

class Person2 {
var name:String
init(name:String){
    self.name = name
}
deinit{
    print("deinit")
}
}
// 強(qiáng)引用, 引用計(jì)數(shù)+1
var strongP = Person2(name: "lnj") // 1
var strongP2 = strongP // 2

// 弱引用, 引用計(jì)數(shù)不變
// 如果利用weak修飾變量, 當(dāng)對象釋放后會(huì)自動(dòng)將變量設(shè)置為nil
// 所以利用weak修飾的變量必定是一個(gè)可選類型, 因?yàn)橹挥锌蛇x類型才能設(shè)置為nil
weak var weakP:Person2? = Person2(name: "lnj")
if let p = weakP{
print(p)
}else
{
print(weakP)
}

unowned無主引用 , 相當(dāng)于OC unsafe_unretained
unowned和weak的區(qū)別:
1.利用unowned修飾的變量, 對象釋放后不會(huì)設(shè)置為nil. 不安全
利用weak修飾的變量, 對象釋放后會(huì)設(shè)置為nil
2.利用unowned修飾的變量, 不是可選類型
利用weak修飾的變量, 是可選類型
什么時(shí)候使用weak?
什么時(shí)候使用unowned?

class Person3 {
var name:String
init(name:String){
    self.name = name
}
deinit{
    print("deinit")
}
}
unowned var weakP3:Person3 = Person3(name: "lnj")

循環(huán)引用
ARC不是萬能的, 它可以很好的解決內(nèi)存問題, 但是在某些場合不能很好的解決內(nèi)存泄露問題
例如兩個(gè)或多個(gè)對象之間的循環(huán)引用問題

class Person4 {
let name:String // 姓名
// 人不一定有公寓
weak var apartment: Apartment? // 公寓
init(name:String){
    self.name = name
}
deinit{
    print("\(self.name) deinit")
}
}
class Apartment {
let number: Int // 房間號
var tenant: Person4? // 租客
init(number:Int){
    self.number = number
}
deinit{
    print("\(self.number) deinit")
}
}
var p4:Person4? = Person4(name: "lnj")
var a4:Apartment? = Apartment(number:888)

p4!.apartment = a4 // 人有一套公寓
a4!.tenant = p4! // 公寓中住著一個(gè)人

// 兩個(gè)對象沒有被銷毀, 但是我們沒有辦法訪問他們了. 內(nèi)存泄露
p4 = nil
a4 = nil



class Person5 {
let name:String // 姓名
// 人不一定有信用卡
var card: CreditCard?
init(name:String){
    self.name = name
}
deinit{
    print("\(self.name) deinit")
}
}
class CreditCard{
let number: Int
// 信用卡必須有所屬用戶
// 當(dāng)某一個(gè)變量/常量必須有值, 一直有值, 那么可以使用unowned修飾
unowned let person: Person5
init(number:Int, person: Person5){
    self.number = number
    self.person = person
}
deinit{
    print("\(self.number) deinit")
    }
}
var p5:Person5? = Person5(name: "lnj")
var cc:CreditCard? = CreditCard(number: 8888888, person: p5!)
p5 = nil
cc = nil
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末皂甘,一起剝皮案震驚了整個(gè)濱河市瓢颅,隨后出現(xiàn)的幾起案子遮咖,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,946評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件箍铲,死亡現(xiàn)場離奇詭異冻押,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)鳞陨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,336評論 3 399
  • 文/潘曉璐 我一進(jìn)店門挺尿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人炊邦,你說我怎么就攤上這事编矾。” “怎么了馁害?”我有些...
    開封第一講書人閱讀 169,716評論 0 364
  • 文/不壞的土叔 我叫張陵窄俏,是天一觀的道長。 經(jīng)常有香客問我碘菜,道長凹蜈,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,222評論 1 300
  • 正文 為了忘掉前任忍啸,我火速辦了婚禮仰坦,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘计雌。我一直安慰自己悄晃,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,223評論 6 398
  • 文/花漫 我一把揭開白布凿滤。 她就那樣靜靜地躺著妈橄,像睡著了一般。 火紅的嫁衣襯著肌膚如雪翁脆。 梳的紋絲不亂的頭發(fā)上眷蚓,一...
    開封第一講書人閱讀 52,807評論 1 314
  • 那天,我揣著相機(jī)與錄音反番,去河邊找鬼沙热。 笑死叉钥,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的篙贸。 我是一名探鬼主播沼侣,決...
    沈念sama閱讀 41,235評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼歉秫!你這毒婦竟也來了蛾洛?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,189評論 0 277
  • 序言:老撾萬榮一對情侶失蹤雁芙,失蹤者是張志新(化名)和其女友劉穎轧膘,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體兔甘,經(jīng)...
    沈念sama閱讀 46,712評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡谎碍,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,775評論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了洞焙。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蟆淀。...
    茶點(diǎn)故事閱讀 40,926評論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖澡匪,靈堂內(nèi)的尸體忽然破棺而出熔任,到底是詐尸還是另有隱情,我是刑警寧澤唁情,帶...
    沈念sama閱讀 36,580評論 5 351
  • 正文 年R本政府宣布疑苔,位于F島的核電站,受9級特大地震影響甸鸟,放射性物質(zhì)發(fā)生泄漏惦费。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,259評論 3 336
  • 文/蒙蒙 一抢韭、第九天 我趴在偏房一處隱蔽的房頂上張望薪贫。 院中可真熱鬧,春花似錦刻恭、人聲如沸瞧省。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,750評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽臀突。三九已至勉抓,卻和暖如春贾漏,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背藕筋。 一陣腳步聲響...
    開封第一講書人閱讀 33,867評論 1 274
  • 我被黑心中介騙來泰國打工纵散, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,368評論 3 379
  • 正文 我出身青樓伍掀,卻偏偏與公主長得像掰茶,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子蜜笤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,930評論 2 361

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