lixiang1994 / AttributedString

基于Swift插值方式优雅的构建富文本, 支持点击长按事件, 支持不同类型过滤, 支持自定义视图等.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

控制器的某个Label属性使用了.action 造成该控制器没有调用deinit

HZRZCW opened this issue · comments

如题!!!!!!

commented

代码截图, 闭包内是否加了[weak self] ?

代码截图, 闭包内是否加了[weak self] ?

闭包内没有任何代码也一样会。

commented

??? 我测试了Demo中的页面 都是可以正常deinit的, 可以提供尽可能全的代码截图吗? 方便分析

??? 我测试了Demo中的页面 都是可以正常deinit的, 可以提供尽可能全的代码截图吗? 方便分析

我再测试一下

commented

注意 action回调闭包即使你传入的是一个function, 只要使用了外部变量就会产生引用

commented

Demo中ActionViewController 里 使用的就是function形式, 如果在方法内要访问self, 如下:

        weak var `self` = self
        func clicked(_ result: ASAttributedString.Action.Result) {
            self?.label.backgroundColor = .brown
        }

Demo中ActionViewController 里 使用的就是function形式, 如果在方法内要访问self, 如下:

        weak var `self` = self
        func clicked(_ result: ASAttributedString.Action.Result) {
            self?.label.backgroundColor = .brown
        }

image

commented

验证了一下, 确实如此, Swift语法的定义, 可以曲线救国的方法只有在方法内嵌套一个子方法调用外部方法了.

        weak var `self` = self
        func clicked(_ result: ASAttributedString.Action.Result) {
            self?.clicked(result)
        }

验证了一下, 确实如此, Swift语法的定义, 可以曲线救国的方法只有在方法内嵌套一个子方法调用外部方法了.

        weak var `self` = self
        func clicked(_ result: ASAttributedString.Action.Result) {
            self?.clicked(result)
        }

能用就行,不过可以提醒下其他人

重新打开吧,有别的问题
image
zhe zhon这种写法也是会导致不走deinit

commented

作者快点解决一下吧

commented

重新打开吧,有别的问题 image zhe zhon这种写法也是会导致不走deinit

是的, 上面有人提到了

commented

重新打开吧,还有其他问题图像zhon这种写法也会导致走不了deinit

是的,上面有人提到过

我看到很长时间没有解决,希望大佬可以抓紧时间修复一下

commented

重新打开吧,还有其他问题图像zhon这种写法也会导致走不了deinit

是的,上面有人提到过

我看到很长时间没有解决,希望大佬可以抓紧时间修复一下

这受限于Swift特性, 我无法解决, 只能建议绕开这种用法

commented

重新打开吧,还有其他问题图像zhon这种写法也会导致走不了deinit

是的,上面有人提到过

我看到很长时间没有解决,希望大佬可以抓紧时间修复一下

这受限于Swift特性, 我无法解决, 只能建议绕开这种用法

好吧😂