Я хотел бы задать вам некоторое мнение о том, что я делаю. Я знаю, что это работает, но я не уверен, что я должен делать то, что делаю.Доступ к частному интерфейсу по общественному методу
У меня есть суперклассное здание, которому нужно разоблачить два NSString, имя и описание. Никто не должен изменять эти переменные отдельно от своих подклассов.
Чтобы получить этот результат, я создал два публичный метод в базовом классе:
@interface Building : NSObject
- (NSString *)name;
- (NSString *)description;
@end
Тогда на каждом подклассе Я создаю частный интерфейс с именем и описанием свойств и пусть волшебство произойдет.
@interface Barrack()
@property (nonatomic, strong) NSString *name;
@property (nonatomic, strong) NSString *description;
@end
@implementation Barrack
@synthesize name, description;
...
@end
То, что вы, ребята, думаете об этом? Это правильный способ получить такого рода результат, кто-нибудь есть идеи лучше по этой теме? Спасибо за ваше мнение.
Бест,
Энрико
Спасибо за ваш вклад Zaph, но не это решение делать то же самое, как у меня? Если вы не синтезируете свойство, атрибуты не используются, правильно? А также атрибут readwrite используется по умолчанию, поэтому в частном интерфейсе не требуется. Возможно, я не очень хорошо себя зарекомендовал, то, что я хотел бы обсудить, - лучший способ создать защищенные переменные в Objective-C и показать одну используемую мной реализацию, и я хотел бы знать, как вы, ребята, решаете эту проблему. –
@ Enrico Да, это по сути делает то же самое только с использованием свойств readonly и readwrite, которые являются лучшими в настоящее время. Существующие средства разработки автоматически синтезируются так, что в большинстве случаев больше не нужны. Свойство readwrite необходимо, потому что публичное свойство объявляется readonly. Он должен быть обновлен readwrite в реализации, поэтому установщики могут использоваться в отличие от прямого доступа к базовому ivar. – zaph