본문 바로가기

iOS

Fatal Exception: NSInvalidArgumentException -[UILabel setLineBreakStrategy:]: unrecognized selector sent to instance

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

 

'iOS' 카테고리의 다른 글

UIImage(contentsOfFile:), UIImage(named:) 차이  (0) 2021.05.06
[iOS] NSTaggedPointerString Crash  (0) 2020.07.02