gpt4 book ai didi

ios - 子类化 NSMutableAttributedString 在初始化时返回 SIGABRT

转载 作者:可可西里 更新时间:2023-11-01 03:31:14 25 4
gpt4 key购买 nike

我在我的一个项目中创建了一个 NSMutableAttributedString 的子类来制作一个字符串,该字符串不断将每个字符更改为 init 时数组中给定的颜色之一,但是当我尝试调用 init 方法时,我得到了一个 sigabrtinitWithString: 方法上。

彩虹字符串.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

初始化颜色:

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

return self;
}

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

* Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[RainbowString initWithString:]: unrecognized selector sent to instance 0x166778c0'

更新

好吧,为了测试这个,我创建了一个完全没有内容的 NSMutableAttributedString 的测试子类。我刚刚创建了子类并保持原样。

测试.h

#import <Foundation/Foundation.h>

@interface Test : NSMutableAttributedString

@end

我跑了:

[[NSMutableAttributedString alloc] initWithString:@"Hello"];

运行和编译都很好。但后来我跑了:

[[Test alloc] initWithString:@"Hello"];

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

最佳答案

你的结论是正确的。 NS(Mutable)AttributedString 是一个 class cluster ,并且将它们子类化是行不通的。遗憾的是,Apple 文档并未明确将其标识为一个。

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com