2015-12-22 2 views
2

Мне нужно закодировать дополнительные данные в NSString (длинный рассказ, пожалуйста, не спрашивайте, почему ...)Использование подкласса NSString в UILabel et.al

Я подклассы 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 

Есть ли работа для этого?

+0

Я думаю, что подклассификация - это не-нет. Вы изучали категории? В любом случае, я не буду спрашивать, почему вы подклассифицированы (не заинтересованы/не сказали), но я считаю, что вам это не нужно. – trojanfoe

+0

Свойство текста UILabel является NSString и, я думаю, именно по этой причине вы не получаете объект MyString. Возможно, вам понадобится подкласс UILabel, а также установить свойство text как «MyString». https://developer.apple.com/library/ios/documentation/UIKit/Reference/UILabel_Class/#//apple_ref/occ/instp/UILabel/text – enzo

+0

подклассификация 'NSString' звучит как плохая идея. – luk2302

ответ

6

Копии этикетки строка:

@property (nonatomic, copy) NSString *text 

так что вы по крайней мере, необходимо реализовать копию, чтобы вернуть тип подкласса и скопировать другие данные.

(не то, что подклассы является лучшей идеей)

+0

Исходные проверки показывают, что он работает. Благодаря! –

0

Если подкласс NSString, вы храбрее, чем я когда-либо буду, и вы полностью по своему усмотрению. NSString - кластер классов. У вас в принципе нет шанса в аду подклассифицировать его и заставить его работать. Он начинается с инициализации, где [super init], который будет методом инициализации NSString, может возвращать любой объект.

+0

Согласно документации, это возможно. В конце дня я использую базовый фундамент NSString. И да, я смел :) –

+0

'' 'Можно подклассифицировать NSString (и NSMutableString), но для этого требуется предоставить хранилища для строки (которая не унаследована подклассами) и реализовать два примитивных метода.' '' ' –

 Смежные вопросы

  • Нет связанных вопросов^_^