Iphone 强制变量声明协议-目标C
是否可以在@protocol中声明变量?只是为了迫使程序员在实现类(实现此协议的类)的头和实现中添加这些变量Iphone 强制变量声明协议-目标C,iphone,objective-c,ios,protocols,Iphone,Objective C,Ios,Protocols,是否可以在@protocol中声明变量?只是为了迫使程序员在实现类(实现此协议的类)的头和实现中添加这些变量 谢谢简短回答:不,这是不可能的。您最多可以强制实现方法和属性的可用性。您不能在@protocol中声明IVAR,但您可以强制一致性类实现一个访问器和一个变异器,这听起来像是您要实现的。例如: @protocol Priced @property(assign, nonatomic) double price; @end @interface Carrot : NSObject <
谢谢简短回答:不,这是不可能的。您最多可以强制实现方法和属性的可用性。您不能在
@protocol
中声明IVAR,但您可以强制一致性类实现一个访问器和一个变异器,这听起来像是您要实现的。例如:
@protocol Priced
@property(assign, nonatomic) double price;
@end
@interface Carrot : NSObject <Priced> {
double price;
}
@end
@implementation Carrot
@synthesize price;
@end
@协议定价
@财产(转让,非原子)双倍价格;
@结束
@接口Carrot:NSObject{
双倍价格;
}
@结束
@实施胡萝卜
@综合价格;
@结束
您可以使对象成为一个具体的子类。这将是确保它们包含您需要的内部构件的唯一方法。当然,如果您对类如何在内部存储数据感兴趣。。。这违反了一些面向对象的范例。谢谢你,鲁迪,这只是一个想法。当我实施一个非常奇怪的设计范例时。有什么解决办法吗?你不应该在意对象使用的是什么实例变量。声明属性,并让实现协议的类按照自己的意愿获取和设置它。无解决方法。我不知道有什么可以强制存在某个实例变量。试着用一个属性来代替。是的,我知道有一种方法,也就是行为。但是考虑到强迫程序员添加一个必须变量。谢谢1,虽然在Objy-C中子类(用户)类似乎比(例如)C++更少见,