a1049145827/BSText

BSTextDemo会崩溃

Closed this issue · 6 comments

BSTextDemo中,点击Text Attachments,时而会崩溃

屏幕快照 2020-02-18 下午11 49 03

屏幕快照 2020-02-18 下午11 47 38

public class TextRunDelegate: NSObject, NSCopying, NSCoding, NSSecureCoding {

var userInfo: NSMutableDictionary?
@objc public var ascent: CGFloat = 0
@objc public var descent: CGFloat = 0
@objc public var width: CGFloat = 0

@objc public var ctRunDelegate: CTRunDelegate {
    
    get {
        // MARK: - 此处要使用本类对象,否则之后需要取出 Delegate 的 ConRef 的时候会出问题
        let extentBuffer = UnsafeMutablePointer<TextRunDelegate>.allocate(capacity: 1)
        if self.descent > 0 {
            extentBuffer.pointee = self
        } else {
            extentBuffer.pointee = self.copy() as! TextRunDelegate
        }

行 extentBuffer.pointee = self 处,闪退

我也遇到了相同的问题,有解决办法了吗?

这个问题感觉跟 Swift 语言或者 iOS 系统的版本有关系,请各位反馈问题的时候附带一下 Xcode 版本,真机/模拟器版本,Swift 版本等信息,谢谢。

xcode11.3.3 iphone11

公共类TextRunDelegate:NSObject,NSCopying,NSCoding,NSSecureCoding {

var userInfo: NSMutableDictionary?
@objc public var ascent: CGFloat = 0
@objc public var descent: CGFloat = 0
@objc public var width: CGFloat = 0

@objc public var ctRunDelegate: CTRunDelegate {
    
    get {
        // MARK: - 此处要使用本类对象,否则之后需要取出 Delegate 的 ConRef 的时候会出问题
        let extentBuffer = UnsafeMutablePointer<TextRunDelegate>.allocate(capacity: 1)
        if self.descent > 0 {
            extentBuffer.pointee = self
        } else {
            extentBuffer.pointee = self.copy() as! TextRunDelegate
        }

行extentBuffer.pointee =自我处,闪退

在给UnsafeMutablePointer类型赋值pointee时,需要调用方法,initialize方法,设置 pointee 的值。

extentBuffer.initialize(to: self)

此问题已修复