В Objective- C, при создании подкласса, как сделать так, чтобы он знал о свойствах, объявленных в файле .m суперкласса? Какой рекомендуемый способ? - PullRequest
0 голосов
/ 04 мая 2020

Я импортировал библиотеку Objective- C со всем исходным кодом в моем проекте XCode. Рекомендуемый способ использования этой библиотеки - создать подкласс ее основного объекта и настроить его поведение. Проблема в том, что у этого суперкласса есть много свойств, объявленных в .m с помощью хорошо известного механизма:

@interface BGRichTextEditorViewController ()


@property (strong) NSString *theString;

@end

Таким образом, они невидимы для моего подкласса, и все, что я могу сделать, это либо изменить код библиотеки и переместите свойства в .h или используйте valueForKey для доступа к свойствам суперкласса из подкласса. Есть ли более элегантный способ решить эту проблему? Большое спасибо

1 Ответ

1 голос
/ 04 мая 2020

Это класс Расширение . Интерфейс publi c находится в заголовочном файле, а частные свойства скрыты от вас. Это было сделано самим разработчиком библиотеки.

Если вы обойдете это с помощью ValueForKey, вы вполне можете обнаружить, что ваш код ломается в новом выпуске библиотеки (они обычно являются частными по причине).

Если у вас есть исходный код и вы не нуждаетесь в выпуске с передовой, я просто разветвил бы библиотеку и внес бы ваши собственные изменения.

...