gpt4 book ai didi

ios - 将 HTML 字符串转换为 NSAttributedString 时运行 Archive 时崩溃

转载 作者:行者123 更新时间:2023-11-30 13:09:12 25 4
gpt4 key购买 nike

Xcode 7.3Swift 2.2

在一个 swift 文件中,我有一个字符串扩展,可以将 HTML 文本转换为 NSAttributedString。

extension String {
func htmlAttributedString() -> NSAttributedString? {
guard let data = self.dataUsingEncoding(NSUTF16StringEncoding, allowLossyConversion: false) else { return nil }
guard let html = try? NSMutableAttributedString(data: data, options: [NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType], documentAttributes: nil) else { return nil }
return html
}
}

我是这样使用的。

let HTMLstr = "<p><b>hello</b> world</p>"
if let attrString = HTMLstr.htmlAttributedString() {
// do something here
}

它在我的手机和模拟器中运行良好,但是当我存档它时,它会导致使用上面的代码时崩溃。我认为问题出在dataUsingEncoding上。任何想法为什么在使用存档应用程序时会崩溃。

编辑

我已经包含了崩溃日志的标题:

Incident Identifier: 90C74E49-4C65-4556-B82D-6748437BB5BA
CrashReporter Key: 4fb0e685f950c6cdecf7132b26f38ff54e013348
Hardware Model: iPhone7,1
Process: AppName [7813]
Path: /private/var/containers/Bundle/Application/1EE7C00E-7600-4D72-839D-8AEA834903B8/AppName.app/AppName
Identifier: uk.co.skymook.AppName
Version: 1 (2.0)
Code Type: ARM-64 (Native)
Parent Process: launchd [1]

Date/Time: 2016-08-13 12:16:08.08 +0100
Launch Time: 2016-08-13 12:15:33.33 +0100
OS Version: iOS 9.3.2 (13F69)
Report Version: 105

Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Subtype: KERN_INVALID_ADDRESS at 0x2000000000000000
Triggered by Thread: 0

Filtered syslog:
None found

最佳答案

长答案:解决方案是极其缓慢的调试。我必须仔细检查导致崩溃的所有代码,并确保对选项进行了正确的检查。因此,我必须删除大量代码,构建存档并将其缩小到许多功能。然后我必须封锁每一行代码,构建存档,直到找到导致其崩溃的原因。应用程序中有数百行代码,并且归档需要时间,这并不容易。最后,当可选值为零时,它被解开。记住它在模拟器中解包正常并在调试中运行,我很惊讶地发现这个问题。

简短回答:这是一个用 nil 展开的 optional ,与上面的代码无关。当您归档应用程序时,内存的处理方式略有不同,并且编译器可以通过所有代码有效性测试。

吸取的教训是存档用于生产,并在整个开发过程中定期在手机上运行它。

关于ios - 将 HTML 字符串转换为 NSAttributedString 时运行 Archive 时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38931814/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com