【Swift】warning: could not load any Objective-C class information. This will significantly reduce the quality of type information available.
문제 실행 코드
UILabel을 확장하여 Interface Builder에서 텍스트 밑줄의 유무를 설정할 수 있도록하려고했습니다.
extension UILabel {
@IBInspectable
var underline: Bool {
get {
return self.underline
}
set {
guard let text: String = self.text else {
return
}
let textAttributes = NSMutableAttributedString(string: text)
if newValue {
textAttributes.addAttribute(NSUnderlineStyleAttributeName, value: NSUnderlineStyle.StyleSingle.rawValue, range: NSMakeRange(0, text.characters.count))
} else {
textAttributes.addAttribute(NSUnderlineStyleAttributeName, value: NSUnderlineStyle.StyleNone.rawValue, range: NSMakeRange(0, text.characters.count))
}
self.attributedText = textAttributes
self.underline = newValue
}
}
}
오류 전문
warning: could not load any Objective-C class information. This will significantly reduce the quality of type information available.
오류 내용
구그라고 보았더니, 이하와 같은 사례가 발견되어 재귀적인 호출로 무한 루프에 빠져 있는 모양.
참고
그 외의 정보는 영어 정보가 대부분으로 잘 모르고,
결론
var underline
의 setter
속에서 newValue
를 자신에게 대입한다고 하는 성대한 착각 처리를 해 버렸던 것이 문제였습니다.이 때문에,
setter
안에서 다시 setter
가 불려, 또 setter
가 불려, 라고 하는 무한 루프가 되어 있었던 것 같습니다.그래서 19 번째 줄
self.underline = newValue
삭제로 수정할 수있었습니다.기본적인 부분이 빠져 있네, 부끄러운
그건 그렇고
위의 Extension 코드는 Github에 있습니다.
htps : // 기주 b. 코 m / 타지 타지 / T X x Tenshion / T Ree / Ma S r / T Ji x x Tenshion / T Ji x x Tenshion
Reference
이 문제에 관하여(【Swift】warning: could not load any Objective-C class information. This will significantly reduce the quality of type information available.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/taji-taji/items/461504a17c750235c3cd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)