【发布时间】:2015-12-22 11:08:21
【问题描述】:
我需要将其他数据编码为NSString(长话短说,请不要问为什么......)
我使用here 概述的方法对NSString 进行了子类化:
当我将这些子类之一分配为 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
有解决办法吗?
【问题讨论】:
-
我认为子分类是一个禁忌。你探索过类别吗?无论如何,我不会问你为什么要分类(不感兴趣/你说不),但我认为你不需要。
-
UILabel 文本属性是一个 NSString,我认为这就是你没有得到 'MyString' 对象的原因。也许您还需要继承 UILabel 并将 text 属性设置为“MyString”。 developer.apple.com/library/ios/documentation/UIKit/Reference/…
-
子类化
NSString听起来是个坏主意。 -
@enzo 这没有意义。即使指向类实例的指针指向基类,子类仍然存在。正如 Wain 所说,复制才是问题所在。
-
我同意子类化是不好的——但是混合也是不好的。当你调配 UILabel:setText: 时,有时你别无选择,只能继承 NSString
标签: ios objective-c nsstring class-cluster