Swift Crashlytics EXC_BREAKPOINT 错误含义
Swift Crashlytics EXC_BREAKPOINT error meaning
我在 Firebase Crashlytics 中看到此报告:
但是我不明白这是什么意思?我实际上有 5 个不同的未解决的错误,但它们看起来都像示例!总是有 17 Wishlists DropDownForWebView 并且总是 EXC_BREAKPOINT .
另一个例子:
谁能解释一下这是什么意思?知道我该如何解决吗?很烦人...
该应用目前已上线:
https://apps.apple.com/us/app/wishlists-dein-wunschzettel/id1503912334
我很高兴得到每一个帮助!
更新:
我的DropDownView
:
//MARK: DropDownView
class DropDownViewForWebView: UIView, UITableViewDelegate, UITableViewDataSource {
var dropOptions = [DropDownOption]()
var tableView = UITableView() // LINE 18
var delegate : DropDownProtocol!
var selectedWishlistDelegate: SelectedWishlistProtocol?
override init(frame: CGRect) {
super.init(frame: frame)
我有一个 textView
可以处理 URLs
。这是我添加 hyperlink
:
的辅助函数
func hyperLink(originalText: String, hyperLink: String, urlString: String) {
let style = NSMutableParagraphStyle()
style.alignment = .left
let attributedOriginalText = NSMutableAttributedString(string: originalText)
let linkRange = attributedOriginalText.mutableString.range(of: hyperLink)
let fullRange = NSMakeRange(0, attributedOriginalText.length)
attributedOriginalText.addAttribute(NSAttributedString.Key.link, value: urlString, range: linkRange)
attributedOriginalText.addAttribute(NSAttributedString.Key.paragraphStyle, value: style, range: fullRange)
attributedOriginalText.addAttribute(NSAttributedString.Key.foregroundColor, value: UIColor.darkCustom, range: fullRange)
attributedOriginalText.addAttribute(NSAttributedString.Key.underlineColor, value: UIColor.darkCustom, range: fullRange)
attributedOriginalText.addAttribute(NSAttributedString.Key.font, value: UIFont(name: "AvenirNext-Medium", size: 15)!, range: fullRange)
self.linkTextAttributes = [
kCTForegroundColorAttributeName: UIColor.darkCustom,
kCTUnderlineStyleAttributeName: NSUnderlineStyle.single.rawValue,
] as [NSAttributedString.Key : Any]
self.attributedText = attributedOriginalText
}
我怎么称呼它:
cell.linkTextView.hyperLink(originalText: "Open link".localized(), hyperLink: "Open link".localized(), urlString: currentWish.link)
currentWish.link
可以是任何东西。不必是有效的 URL
。我在点击 link.
时验证了它
崩溃发生在 iOS 隐藏代码中,就在调用 UITextViewDelegate
方法之前 textView(_:shouldInteractWith:in:interaction:)
。
这与 的问题相同。要重现您的错误,您可以输入 links 韩文文本(한국어 텍스트
,即根据 Google 翻译的“韩文文本”),阿拉伯文本(نص عربي
,即根据 Google 翻译的“阿拉伯语文本”等。您可以在 Internet 上搜索示例“奇怪”文本(即,不是“a-z 字符”)。
发生了什么:
设置:
attributedText.addAttribute(.link, value: INVALIDSTRINGVALUE, range: linkRange)
aTextView.attributedText = someAttributedText
用户点击 link
稍后调用textView(_:shouldInteractWith:in:interaction:)的苹果内部代码
textView(_:shouldInteractWith:in:interaction:)
linkTappedCallbackClosure(url: URL)
openURL(_ urlString: String)
你在哪里:
guard let url = URL(string: urlString) else {
showInvalidUrlAlert()
return
}
因此您检查 URL 是否有效,但为时已晚。 iOS 代码内的代码崩溃。
所以在用 hyperLink(originalText:hyperLink:urlString:)
设置 url 之前检查它是否有效 URL(即 URL(string: urlString) != nil
),如果不是,调用 showInvaludURLAlert()
.
好的,但这只会修复新条目,而不是会导致崩溃的当前值。
要修复较旧的条目,您可以决定删除数据库中所有无效的 URL。但它可能会删除用户认为是标签或其他额外字段的信息。
一个额外的代码,可能是:
遍历你的数据库。
将布尔字段“hasBeenFixed”添加到您的数据库。
对于每个无效的URL(意思是URL(string: thatValue) == nil)
),百分比转义它。,将值hasBeenFixed 更改为true
如果用户尝试点击 link.
,它应该避免崩溃(以验证)
向用户显示值时(编辑时),如果 hasBeenFixed == true
,则显示已移除百分比转义的值。然后,当用户尝试验证时会弹出警报,并且需要修复它。当保存有效的 URL 时,将 hasBeenFixed
更改为 false
。
我在 Firebase Crashlytics 中看到此报告:
但是我不明白这是什么意思?我实际上有 5 个不同的未解决的错误,但它们看起来都像示例!总是有 17 Wishlists DropDownForWebView 并且总是 EXC_BREAKPOINT .
另一个例子:
谁能解释一下这是什么意思?知道我该如何解决吗?很烦人...
该应用目前已上线:
https://apps.apple.com/us/app/wishlists-dein-wunschzettel/id1503912334
我很高兴得到每一个帮助!
更新:
我的DropDownView
:
//MARK: DropDownView
class DropDownViewForWebView: UIView, UITableViewDelegate, UITableViewDataSource {
var dropOptions = [DropDownOption]()
var tableView = UITableView() // LINE 18
var delegate : DropDownProtocol!
var selectedWishlistDelegate: SelectedWishlistProtocol?
override init(frame: CGRect) {
super.init(frame: frame)
我有一个 textView
可以处理 URLs
。这是我添加 hyperlink
:
func hyperLink(originalText: String, hyperLink: String, urlString: String) {
let style = NSMutableParagraphStyle()
style.alignment = .left
let attributedOriginalText = NSMutableAttributedString(string: originalText)
let linkRange = attributedOriginalText.mutableString.range(of: hyperLink)
let fullRange = NSMakeRange(0, attributedOriginalText.length)
attributedOriginalText.addAttribute(NSAttributedString.Key.link, value: urlString, range: linkRange)
attributedOriginalText.addAttribute(NSAttributedString.Key.paragraphStyle, value: style, range: fullRange)
attributedOriginalText.addAttribute(NSAttributedString.Key.foregroundColor, value: UIColor.darkCustom, range: fullRange)
attributedOriginalText.addAttribute(NSAttributedString.Key.underlineColor, value: UIColor.darkCustom, range: fullRange)
attributedOriginalText.addAttribute(NSAttributedString.Key.font, value: UIFont(name: "AvenirNext-Medium", size: 15)!, range: fullRange)
self.linkTextAttributes = [
kCTForegroundColorAttributeName: UIColor.darkCustom,
kCTUnderlineStyleAttributeName: NSUnderlineStyle.single.rawValue,
] as [NSAttributedString.Key : Any]
self.attributedText = attributedOriginalText
}
我怎么称呼它:
cell.linkTextView.hyperLink(originalText: "Open link".localized(), hyperLink: "Open link".localized(), urlString: currentWish.link)
currentWish.link
可以是任何东西。不必是有效的 URL
。我在点击 link.
崩溃发生在 iOS 隐藏代码中,就在调用 UITextViewDelegate
方法之前 textView(_:shouldInteractWith:in:interaction:)
。
这与 한국어 텍스트
,即根据 Google 翻译的“韩文文本”),阿拉伯文本(نص عربي
,即根据 Google 翻译的“阿拉伯语文本”等。您可以在 Internet 上搜索示例“奇怪”文本(即,不是“a-z 字符”)。
发生了什么:
设置:
attributedText.addAttribute(.link, value: INVALIDSTRINGVALUE, range: linkRange) aTextView.attributedText = someAttributedText
用户点击 link
稍后调用textView(_:shouldInteractWith:in:interaction:)的苹果内部代码
textView(_:shouldInteractWith:in:interaction:)
linkTappedCallbackClosure(url: URL)
openURL(_ urlString: String)
你在哪里:guard let url = URL(string: urlString) else { showInvalidUrlAlert() return }
因此您检查 URL 是否有效,但为时已晚。 iOS 代码内的代码崩溃。
所以在用 hyperLink(originalText:hyperLink:urlString:)
设置 url 之前检查它是否有效 URL(即 URL(string: urlString) != nil
),如果不是,调用 showInvaludURLAlert()
.
好的,但这只会修复新条目,而不是会导致崩溃的当前值。
要修复较旧的条目,您可以决定删除数据库中所有无效的 URL。但它可能会删除用户认为是标签或其他额外字段的信息。
一个额外的代码,可能是:
遍历你的数据库。
将布尔字段“hasBeenFixed”添加到您的数据库。
对于每个无效的URL(意思是URL(string: thatValue) == nil)
),百分比转义它。,将值hasBeenFixed 更改为true
如果用户尝试点击 link.
,它应该避免崩溃(以验证)
向用户显示值时(编辑时),如果 hasBeenFixed == true
,则显示已移除百分比转义的值。然后,当用户尝试验证时会弹出警报,并且需要修复它。当保存有效的 URL 时,将 hasBeenFixed
更改为 false
。