iT邦幫忙

2024 iThome 鐵人賽

DAY 20
0
Mobile Development

自己的 app 自己寫系列 第 20

[Day20] 炸雞拿錯了老闆對不起

  • 分享至 

  • xImage
  •  

世界賽終於進瑞士輪了好耶,但抽籤結果球是空的是怎麼回事???


在 iOS 裡,管理記憶體的機制中有個東西叫 ARC (Automatic Reference Counting)。ARC 會追蹤物件的引用次數,當發現物件沒有繼續被使用時,就會 release memory。

要達成上面說的內容,每個物件都需要一個 counter 來紀錄被使用到的次數,如果 counter 歸零時就可以把物件清掉。而引用又分成三種:

  • strong reference:當一個變數持有物件時,會創建強引用
  • weak reference:不會增加 counter 數字,這是特別用來處理兩個物件互相引用的情況,避免無限的循環引用
  • unowned reference:unowned 不會被設定為 nil,因此 unowned 必須確保引用的對象不會被釋放
    一般沒有特別指定的話,預設會創建 strong reference。如果要使用 weak 或 unowned ref,則必須在引用時特別指定。

講到這塊也可以看看其他語言的情形,比較低階的語言像是 C 和 C++,會需要手動分配記憶體。而 Java, Javascript, Python 等則有 garbage collection 機制,基本上不需要開發者對於記憶體做額外處理。


上一篇
[Day19] 要不要從 Arc 搬回 Safari
下一篇
[Day21] 一片漆黑的筆電螢幕應該換掉嗎
系列文
自己的 app 自己寫30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言