Протокол для принудительного объявления переменных - Цель C - PullRequest
4 голосов
/ 06 сентября 2011

Можно ли объявить переменную в @protocol? Просто чтобы заставить программистов добавить эти переменные в заголовок и реализацию класса (классы, реализующие этот протокол)?

Спасибо

Ответы [ 3 ]

9 голосов
/ 06 сентября 2011

Краткий ответ: Нет, это невозможно . Вы можете установить доступность методов и свойств максимум.

3 голосов
/ 06 сентября 2011

Вы не можете объявить ivars за @protocol s, но вы можете заставить соответствующий класс реализовать аксессор и мутатор, что похоже на то, к чему вы стремитесь.Например:

@protocol Priced
@property(assign, nonatomic) double price;
@end

@interface Carrot : NSObject <Priced> {
    double price;
}
@end
@implementation Carrot
@synthesize price;
@end
1 голос
/ 06 сентября 2011

Вы можете сделать объекты конкретным подклассом.Это был бы единственный способ убедиться, что они содержат необходимые вам внутренние органы.Конечно, если вам интересно, как классы хранят свои данные внутри ... Это нарушает некоторые парадигмы.

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