Я просто перенес наш проект в swift 3 и вижу много сбоев из-за одной проблемы:
Завершение приложения из-за неперехваченного исключения "NSInvalidArgumentException", причина: '- [_ SwiftValue pointSize]: непризнанный селектор, отправленный экземпляру
Причиной этой ошибки является вызов:
[NSAttributedString(NSExtendedStringDrawing) boundingRectWithSize:options:context:]
Что я заметил, так это то, что если я передам String в NSString и назову boundingRectWithSize
, он выкинет эту ошибку. Похоже, что это происходит и во многих других частях, например, если я отправил заголовок контроллера представления в раскадровку, он выдает ту же ошибку.
Любой, у кого есть те же проблемы?
Чтобы воспроизвести проблему:
Создайте новый проект Swift 3 в Xcode 8 и добавьте следующую строку в viewDidLoad:
let attributes: [String: AnyObject?] = [
NSFontAttributeName: UIFont.systemFont(ofSize: 14)
]
let boundingRect = ("hello" as NSString).boundingRect(with: CGSize(width: 100, height: 100), options: .usesLineFragmentOrigin, attributes: attributes, context: nil)
Но, как я уже сказал, он падает во многих других местах, поскольку кажется, что UIKit использует этот метод внутренне во многих частях