我有许多UIViewController
个子类,我希望它们共享名为session
的相同属性,该属性处理“已登录”状态。
我知道我可以使用父类,但这是非常明确的,所以我想知道我是否可以通过共享协议“强制”session
属性。
我从未见过在协议中定义的显式属性(显然你可以定义setter和getter),所以在协议中定义一个可建模式的属性吗?
答案 0 :(得分:10)
@property
也可以出现在协议或类别的声明中。
陈述于official apple documentation。所以没问题。
答案 1 :(得分:2)
您可以在协议中拥有属性,前提是每个符合您协议的类都具有该属性的相应@synthesize
,或者提供getter和setter。
答案 2 :(得分:2)
是的,使用协议可以添加属性:
@protocol MyProtocol <NSObject>
@property (nonatomic, retain) NSFoobar *baz;
@end
并且@synthesize baz;
在采用此协议的每个类中(或者您可以使用@optional
关键字将声明的属性标记为可选)。
答案 3 :(得分:1)
在.h文件中:
@property(nonatomic,strong)UILabel *mylabel;
在.m文件中:
@synthesize mylabel = _mylabel;
编译器将为mylabel创建getter和setter。
Ex ->
-(void)setMylabe:(UILabel *) mylabel { //setter
}
-(UIlabel*)mylabel { // getter
}