jjzjj

ios - 新 Xcode 7.3 : Swift NSDate extension with nullable convenience init crashes EXC_BAD_ACCESS

coder 2023-09-11 原文

我有这个带有可为空初始化的 NSDate 扩展,它一直运行良好,直到我更新到新发布的 Xcode 7.3。

现在它因 EXC_BAD_ACCESS 而崩溃。

extension NSDate
{
    convenience init?(dateString:String, formatString:String?)
    {
        let dateFormatter = NSDateFormatter()
        dateFormatter.dateFormat = formatString

        let newDate:NSDate? = dateFormatter.dateFromString(dateString)

        if let newNewDate = newDate
        {
            self.init(timeInterval:0, sinceDate:newNewDate)
            return
        }

        print("ERROR: Wrong format [\(formatString)] for date [\(dateString)]")
        return nil
    }
}

let d1 = NSDate(dateString: "2016-01-01 11:00:00", formatString: "yyyy-MM-dd hh:mm:ss") // OK
let d2 = NSDate(dateString: "qq123", formatString: "qwe") // EXC_BAD_ACCESS

您对此有任何可能的解决方案吗? 无法弄清楚 - 我是否以某种方式滥用了 NSDate 的扩展?

最佳答案

作为dan在他的评论中已经提到,确保始终在从可失败初始化程序返回 nil 之前初始化对象(或从可抛出的初始化程序中抛出)修复了这个问题。

有关潜在问题的更多信息,请参阅 SR-704: EXC_BAD_ACCESS on returning nil from a failable initializer of NSObject subclass .看起来它已在主线分支中修复,但没有进入最终的 Swift 2.2 版本。期待在下一次点更新中修复。

关于ios - 新 Xcode 7.3 : Swift NSDate extension with nullable convenience init crashes EXC_BAD_ACCESS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36189714/

有关ios - 新 Xcode 7.3 : Swift NSDate extension with nullable convenience init crashes EXC_BAD_ACCESS的更多相关文章

随机推荐