我有 UIView 类别,它定义了操作attributedText
UILabel 和 UITextView 属性的方法。
@implementation UIView (replaceAttrText)
-(void) replaceAttrText: (NSString *)str {
if ([self respondsToSelector: @selector(setAttributedText)]) {
NSMutableAttributedString *labelText = [self template];
// change it
[self performSelector:@selector(setAttributedText) withObject: labelText];
}
}
@end
respondsToSelector 为 UILabel 和 UITextView 返回 false(尽管它们响应 setAttributedText),如果 setAttributedText 直接执行而不respondsToSelector
检查,则会引发异常。
当类别直接在 UILabel (没有选择器)上实现时,一切正常,但不幸的是 UILabel 和 UITextView 没有具有属性Text属性的共同祖先。
我究竟做错了什么?谢谢!