NSMutableAttributedString

NSMutableAttributedString

我在一个项目中创建了NSMutableAttributedString的子类,以创建一个字符串,该字符串将每个字符连续更改为init数组中给定的颜色之一,但是当我尝试调用init方法时,在sigabrt方法上得到了initWithString:

RainbowString.h

#import <Foundation/Foundation.h>

@interface RainbowString : NSMutableAttributedString

@property (nonatomic) NSArray* colors;
@property (nonatomic) NSTimeInterval duration;
@property (nonatomic) NSTimer* timer;

- (id)initStringWithColors:(NSArray*)colors withString:(NSString*)string;
- (id)initStringWithColors:(NSArray*)colors withCycleDuration:(NSTimeInterval)duration withString:(NSString*)string;

- (void)stop;
- (void)start:(NSTimeInterval)duration;

@end

initWithColors:
- (id)initStringWithColors:(NSArray *)colors withString:(NSString *)string
{
    self = [super initWithString:string];
    if(self)
    {
        [self setColors:colors];
        [self cycle];
    }

    return self;
}

即使我只是调用[[RainbowString alloc] initWithString:@"Hello"];,我也会遇到相同的错误:



更新

好的,为了进行测试,我创建了NSMutableAttributedString的测试子类,该子类完全没有内容。我刚刚创建了子类,并将其保留为空白。

测试
#import <Foundation/Foundation.h>

@interface Test : NSMutableAttributedString

@end

我跑了:
[[NSMutableAttributedString alloc] initWithString:@"Hello"];

运行并编译良好。但是后来我跑了:
[[Test alloc] initWithString:@"Hello"];

同样的错误。我不允许子类化NSMutableAttributedString之类的东西吗?

最佳答案

您的结论是正确的。 NS(Mutable)AttributedStringclass cluster,将它们子类化是行不通的。可惜Apple文档没有明确地将其识别为一个文档。

关于ios - 分流NSMutableAttributedString在初始化时返回SIGABRT,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21692071/

10-10 20:40