在 UILabel et.al 中使用 NSString 子类

Using a NSString subclass in UILabel et.al

我需要将额外的数据编码到NSString(说来话长,请不要问为什么...)

我使用概述的方法 NSString 进行了子类化 here:

当我将这些子类之一分配为 UILabel's 文本时,我希望在询问标签文本时能取回它。但事实并非如此。 (我得到了一个 NSString 集群实例)

MyString *string = [[MyString alloc] initWithString:@"Some string"];
UILabel *l = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
l.text = string;
NSString *t = l.text;  // not getting the "MyString" object

有解决办法吗?

标签复制字符串:

@property (nonatomic, copy) NSString *text

所以你至少需要实现复制到 return 你的子类类型并复制你的其他数据。

(不是子类化是最好的主意)

如果你subclass NSString,你比我更勇敢,而且你完全靠自己。 NSString 是一个 class 簇。你基本上没有机会去 subclass 它并让它工作。它从初始化开始,其中 [super init] 是 NSString init 方法,可能 return 任何类型的对象。