NSMutableAttributedString 子类不识别选择器,即使没有修改?
NSMutableAttributedString subclass recognizes no selectors, even without modification?
我正在尝试子class NSMutableAttributedString
,但我发现我无法以任何形式使用它。即使是刚创建的subclass,也无法初始化:
我收到的异常如下:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[ALCTMutableAttributedString initWithString:]: unrecognized selector sent to instance 0x16d21680'
它甚至不能使用简单的初始化调用:
ALCTMutableAttributedString *newString = [[ALCTMutableAttributedString alloc]init];
下面是 Subclass 的基本内容:
Header 文件:
#import <Foundation/Foundation.h>
@interface ALCTMutableAttributedString : NSMutableAttributedString
@end
执行文件:
#import "ALCTMutableAttributedString.h"
@implementation ALCTMutableAttributedString
@end
我很困惑为什么这在我的项目中是不允许的或不可能的。可能有人知道为什么吗?
分机:
为了演示我如何使用 class,这里是我使用它的 class 的 header:
#import <UIKit/UIKit.h>
#import "Foundation/Foundation.h"
#import "CXCommentLabel.h"
#import "ALCTMutableAttributedString.h"
@interface CXPodcastViewController : UIViewController
@property (nonatomic,weak)IBOutlet CXCommentLabel *commentLabel;
@property (nonatomic,weak)IBOutlet NSLayoutConstraint *commentLabelHeightConstraint;
@property (nonatomic,weak)IBOutlet UIButton *resizeButton;
-(IBAction)resizeTheLabel:(id)sender;
@end
我是这样称呼它的:(.m 文件)
-(void)resizeTheLabel:(id)sender {
// Crash here
ALCTMutableAttributedString *newString = [[ALCTMutableAttributedString alloc]init];
// Crash here ^
[self.commentLabel setAttributedText:newString];
}
检查这个Apple document”,在 Apple 文档本身中有一个名为“子类化的替代方案”的部分,请也检查一下
无法使用 NSMutableAttributedString 对字符串进行子类化。
使用 nsmutable 属性字符串的替代方法是
-(void)resizeTheLabel:(id)sender {
NSMutableAttributedString* attrStr = [[NSMutableAttributedString alloc] initWithString:@"string" attributes:@{NSForegroundColorAttributeName:[UIColor blackColor]}];
[self.commentLabel setAttributedText:newString];
}
将所需的属性添加到字典中并将其作为参数传递。
快乐编码:)
我正在尝试子class NSMutableAttributedString
,但我发现我无法以任何形式使用它。即使是刚创建的subclass,也无法初始化:
我收到的异常如下:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[ALCTMutableAttributedString initWithString:]: unrecognized selector sent to instance 0x16d21680'
它甚至不能使用简单的初始化调用:
ALCTMutableAttributedString *newString = [[ALCTMutableAttributedString alloc]init];
下面是 Subclass 的基本内容:
Header 文件:
#import <Foundation/Foundation.h>
@interface ALCTMutableAttributedString : NSMutableAttributedString
@end
执行文件:
#import "ALCTMutableAttributedString.h"
@implementation ALCTMutableAttributedString
@end
我很困惑为什么这在我的项目中是不允许的或不可能的。可能有人知道为什么吗?
分机:
为了演示我如何使用 class,这里是我使用它的 class 的 header:
#import <UIKit/UIKit.h>
#import "Foundation/Foundation.h"
#import "CXCommentLabel.h"
#import "ALCTMutableAttributedString.h"
@interface CXPodcastViewController : UIViewController
@property (nonatomic,weak)IBOutlet CXCommentLabel *commentLabel;
@property (nonatomic,weak)IBOutlet NSLayoutConstraint *commentLabelHeightConstraint;
@property (nonatomic,weak)IBOutlet UIButton *resizeButton;
-(IBAction)resizeTheLabel:(id)sender;
@end
我是这样称呼它的:(.m 文件)
-(void)resizeTheLabel:(id)sender {
// Crash here
ALCTMutableAttributedString *newString = [[ALCTMutableAttributedString alloc]init];
// Crash here ^
[self.commentLabel setAttributedText:newString];
}
检查这个Apple document”,在 Apple 文档本身中有一个名为“子类化的替代方案”的部分,请也检查一下
无法使用 NSMutableAttributedString 对字符串进行子类化。
使用 nsmutable 属性字符串的替代方法是
-(void)resizeTheLabel:(id)sender {
NSMutableAttributedString* attrStr = [[NSMutableAttributedString alloc] initWithString:@"string" attributes:@{NSForegroundColorAttributeName:[UIColor blackColor]}];
[self.commentLabel setAttributedText:newString];
}
将所需的属性添加到字典中并将其作为参数传递。 快乐编码:)