强制variables声明的协议 – 目标C

有可能在@protocol中声明variables吗? 只是为了强迫程序员在实现类(实现此协议的类)头和实现中添加这些variables?

谢谢

简答: 不,这是不可能的 。 您最多可以强制使用方法和属性。

你不能在@protocol声明ivars,但你可以强制符合类来实现一个访问器和一个增变器,这听起来就像你在做什么。 例如:

 @protocol Priced @property(assign, nonatomic) double price; @end @interface Carrot : NSObject <Priced> { double price; } @end @implementation Carrot @synthesize price; @end 

你可以使对象成为一个具体的子类。 这将是确保它们包含所需内部组件的唯一方法。 当然,如果你对这些类是如何在内部存储数据感兴趣的话,那就违反了一些范例。