iOS
Fatal Exception: NSInvalidArgumentException -[UILabel setLineBreakStrategy:]: unrecognized selector sent to instance
Darth Vader iOS
2021. 8. 26. 12:59
iOS 12.x 디바이스에서 발생하는 크래쉬입니다.
UILabel 의 lineBreakStrategy 프로퍼티에 .pushOut 을 설정하면 크래쉬가 발생합니다.
extension NSParagraphStyle {
public struct LineBreakStrategy : OptionSet {
public init(rawValue: UInt)
@available(iOS 9.0, *)
public static var pushOut: NSParagraphStyle.LineBreakStrategy { get }
@available(iOS 14.0, *)
public static var hangulWordPriority: NSParagraphStyle.LineBreakStrategy { get }
@available(iOS 14.0, *)
public static var standard: NSParagraphStyle.LineBreakStrategy { get }
}
}
내부에 iOS 9.0+ 라고 적혀있어서 사용했는데, 실제 프로덕트에 나가고 나니 iOS 12.x 디바이스에서 크래쉬가 리포트되었습니다.
(iOS 13.x 디바이스에서 테스트했을 때에는 크래쉬가 발생하지 않았습니다.)
대안으로 lineBreakMode 의 .byCharWrapping 으로 대체하였습니다.
label.lineBreakMode = .byCharWrapping