iT邦幫忙

鐵人檔案

2023 iThome 鐵人賽
回列表
自我挑戰組

自己的 Leak, 自己抓(swift) 系列

自己自製的小工具回憶錄。

提到 Swift 的 leak 就免不了提到 ARC

因為沒有處理好 ARC strong ref 近一步導致 Retain Cycle

因此就想說能不能透過程式碼檢查,直接找出潛在(或已經是) Leak 的目標

內容會涵蓋
SwiftSyntax
SourceKitten(SourceKit)

鐵人鍊成 | 共 30 篇文章 | 1 人訂閱 訂閱系列文 RSS系列文
DAY 1

ARC

ARC 首先,我們可以先從官方的範例 ARC 開始‧ class Person { let name: String init(name: St...

2023-09-15 ‧ 由 yume190 分享
DAY 2

其他 Retain Cycle 範例

其他 Retain Cycle 範例 Closure 我們先從一個範例開始‧下面這段 code 雖然沒有 leak‧實際上 closure 已經造成 stro...

2023-09-16 ‧ 由 yume190 分享
DAY 3

定義潛在 Leak

定義潛在 Leak 這個階段要先定義那些是我們想要抓的目標 從上一篇來看,我們可將他們分成兩類 Capture Assign Capture 因為不小心...

2023-09-17 ‧ 由 yume190 分享
DAY 4

需要掃描哪幾份檔案

這邊我們要先用第一個 lib SourceKitten 透過 SourceKitten.Module 取得 某 Target 的 file list. 以及編譯...

2023-09-18 ‧ 由 yume190 分享
DAY 5

SwiftSyntax 前導 (AST)

SwiftSyntax 前導 (AST) 在前面的第四天,我們已經學會了如何取得特定 Module 的 file list。現在,我們將進一步使用另一個 lib...

2023-09-19 ‧ 由 yume190 分享
DAY 6

初入 SwiftSyntax

初入 SwiftSyntax 今天我們要引入第 2 個 library SwiftSyntax, 並且會稍微帶過三個元件,分別是: Parser Syntax...

2023-09-20 ‧ 由 yume190 分享
DAY 7

深入 SyntaxVisitor

深入 SyntaxVisitor 在深入研究 SyntaxVisitor 之前,讓我們先介紹一個重要的工具。 AST Explorer 由katsumi大 所...

2023-09-21 ‧ 由 yume190 分享
DAY 8

第一個工具 ID Visitor

第一個工具 ID Visitor 今天我們要撰寫第一個工具來蒐集所有的 ID 實作部分也很簡單只要遇到 ID 就直接儲存起來即可。 import SwiftSy...

2023-09-22 ‧ 由 yume190 分享
DAY 9

一個 Visitor 解決不了,那就再加一個(Decl Visitor)

我們先回顧昨天已經拿到了所有 ID 目前的資料太過於零散且包含許多雜訊。 於是,一個 visitor 無法解決的問題。 那就~在來一層抽象(visitor)...

2023-09-23 ‧ 由 yume190 分享
DAY 10

第三層 Visitor (Closure Visitor)

昨天我們從零散 ID 升級到各個宣告(global/class/...)的 零散 ID。 於是我們可在仿照 昨天,一層 visitor 解決不了。 繼續在中間...

2023-09-24 ‧ 由 yume190 分享