BSTextDemo会崩溃
Closed this issue · 6 comments
LongChLiu commented
LongChLiu commented
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 处,闪退
NiuDongYue commented
我也遇到了相同的问题,有解决办法了吗?
a1049145827 commented
这个问题感觉跟 Swift 语言或者 iOS 系统的版本有关系,请各位反馈问题的时候附带一下 Xcode 版本,真机/模拟器版本,Swift 版本等信息,谢谢。
libing1125 commented
xcode11.3.3 iphone11
magicer0126 commented
公共类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)
a1049145827 commented
此问题已修复