Skip to content

Commit d1d1ff3

Browse files
committed
解决内存泄漏
1 parent f3a2b4d commit d1d1ff3

File tree

5 files changed

+19
-18
lines changed

5 files changed

+19
-18
lines changed

AttributedString.podspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
Pod::Spec.new do |s|
22

33
s.name = "AttributedString"
4-
s.version = "3.4.1"
4+
s.version = "3.4.2"
55
s.summary = "基于Swift字符串插值快速构建你想要的富文本, 支持点击按住等事件获取, 支持多种类型过滤"
66

77
s.homepage = "https://github.com/lixiang1994/AttributedString"

Sources/Action.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ extension ASAttributedString {
3838

3939
/// 内部使用
4040
internal var isExternal: Bool = true
41-
internal var handle: (() -> Void)?
41+
internal var result: Action.Result?
4242

4343
public init(_ trigger: Trigger = .click, highlights: [Highlight] = .defalut, with callback: @escaping (Result) -> Void) {
4444
self.trigger = trigger

Sources/Extension/AppKit/NSTextFieldExtension.swift

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -174,9 +174,7 @@ extension ASAttributedStringWrapper where Base: NSTextField {
174174
let result: Action.Result = string.value.get($1.key)
175175
let actions: [Action] = $1.value.reduce(into: []) {
176176
var temp = $1
177-
temp.handle = {
178-
temp.callback(result)
179-
}
177+
temp.result = result
180178
$0.append(temp)
181179
}
182180
$0[$1.key] = actions
@@ -292,7 +290,8 @@ fileprivate extension NSTextField {
292290
guard let touched = self.touched else { return }
293291
let actions = touched.1.flatMap({ $0.value })
294292
for action in actions where action.trigger.matching(sender) {
295-
action.handle?()
293+
guard let result = action.result else { return }
294+
action.callback(result)
296295
}
297296
}
298297

Sources/Extension/UIKit/UILabel/UILabelExtension.swift

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -181,9 +181,7 @@ extension ASAttributedStringWrapper where Base: UILabel {
181181
let result: Action.Result = string.value.get($1.key)
182182
let actions: [Action] = $1.value.reduce(into: []) {
183183
var temp = $1
184-
temp.handle = {
185-
temp.callback(result)
186-
}
184+
temp.result = result
187185
$0.append(temp)
188186
}
189187
$0[$1.key] = actions
@@ -286,7 +284,8 @@ extension UILabel {
286284
return
287285
}
288286
// 保证 touchesBegan -> Action -> touchesEnded 的调用顺序
289-
ActionQueue.main.ended {
287+
ActionQueue.main.ended { [weak self] in
288+
guard let self = self else { return }
290289
self.touched = nil
291290
self.attributedText = touched.0.value
292291
}
@@ -300,7 +299,8 @@ extension UILabel {
300299
return
301300
}
302301
// 保证 touchesBegan -> Action -> touchesEnded 的调用顺序
303-
ActionQueue.main.cancelled {
302+
ActionQueue.main.cancelled { [weak self] in
303+
guard let self = self else { return }
304304
self.touched = nil
305305
self.attributedText = touched.0.value
306306
}
@@ -319,7 +319,8 @@ fileprivate extension UILabel {
319319
guard let touched = self.touched else { return }
320320
let actions = touched.1.flatMap({ $0.value })
321321
for action in actions where action.trigger.matching(sender) {
322-
action.handle?()
322+
guard let result = action.result else { return }
323+
action.callback(result)
323324
}
324325
}
325326
}

Sources/Extension/UIKit/UITextViewExtension.swift

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -184,9 +184,7 @@ extension ASAttributedStringWrapper where Base: UITextView {
184184
let result: Action.Result = string.value.get($1.key)
185185
let actions: [Action] = $1.value.reduce(into: []) {
186186
var temp = $1
187-
temp.handle = {
188-
temp.callback(result)
189-
}
187+
temp.result = result
190188
$0.append(temp)
191189
}
192190
$0[$1.key] = actions
@@ -327,7 +325,8 @@ extension UITextView {
327325
return
328326
}
329327
// 保证 touchesBegan -> Action -> touchesEnded 的调用顺序
330-
ActionQueue.main.ended {
328+
ActionQueue.main.ended { [weak self] in
329+
guard let self = self else { return }
331330
self.touched = nil
332331
self.attributedText = touched.0.value
333332
self.layout()
@@ -342,7 +341,8 @@ extension UITextView {
342341
return
343342
}
344343
// 保证 touchesBegan -> Action -> touchesEnded 的调用顺序
345-
ActionQueue.main.cancelled {
344+
ActionQueue.main.cancelled { [weak self] in
345+
guard let self = self else { return }
346346
self.touched = nil
347347
self.attributedText = touched.0.value
348348
self.layout()
@@ -362,7 +362,8 @@ fileprivate extension UITextView {
362362
guard let touched = self.touched else { return }
363363
let actions = touched.1.flatMap({ $0.value })
364364
for action in actions where action.trigger.matching(sender) {
365-
action.handle?()
365+
guard let result = action.result else { return }
366+
action.callback(result)
366367
}
367368
}
368369
}

0 commit comments

Comments
 (0)