线程1:EXC_BAD_ACCESS(代码= 1,地址= 0xc0e8b0e1910)

时间:2018-11-29 09:11:23

标签: swift extension-methods exc-bad-access

崩溃

它在Xcode 9.4.1 swift 3.x中正常工作

使用Xcode 10后,swift 3.x应用程序在代码段中的objc_getAssociatedObject处崩溃。

扩展字符串{

struct AssociatedKey {
    static var associatedFormatterKey: UInt8 = 0
}

var associatedDateFormatter: DateFormatter {
    get {
        if let formatter = objc_getAssociatedObject(self, &AssociatedKey.associatedFormatterKey) as? DateFormatter {
            return formatter
        } else {
            let formatter = DateFormatter()
            formatter.locale = Locale.serverFormatterLocale
            objc_setAssociatedObject(self, &AssociatedKey.associatedFormatterKey, formatter, .OBJC_ASSOCIATION_ASSIGN)
            return formatter
        }
    }
}}

应用僵尸之后

错误:[NSDateFormatter保留]:消息发送到已释放实例0x6000067a4630

解决方法:将objc_setAssociatedObject策略.OBJC_ASSOCIATION_ASSIGN更新为.OBJC_ASSOCIATION_RETAIN)可以正常工作。

我想了解最佳解决方法。

任何帮助都会很棒。

谢谢

0 个答案:

没有答案