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];

}

将所需的属性添加到字典中并将其作为参数传递。 快乐编码:)