我有许多UIViewController
的子类,并且我希望它们共享名为session
的属性,该属性处理“已登录”状态。
我知道我可以使用父类,但这很明确,所以我想知道是否可以通过共享协议来“强制执行”session
属性。
我从未见过在协议中定义显式属性(显然可以定义setter和getter),因此在协议中定义属性是一种值得推荐的模式吗?
我有许多UIViewController
的子类,并且我希望它们共享名为session
的属性,该属性处理“已登录”状态。
我知道我可以使用父类,但这很明确,所以我想知道是否可以通过共享协议来“强制执行”session
属性。
我从未见过在协议中定义显式属性(显然可以定义setter和getter),因此在协议中定义属性是一种值得推荐的模式吗?
是的,使用协议可以添加属性:
@protocol MyProtocol <NSObject>
@property (nonatomic, retain) NSFoobar *baz;
@end
在每个采用此协议的类中都需要使用@synthesize baz;
(或者您可以使用@optional
关键字将声明属性标记为可选项)。
如果每个符合您的协议的类都有相应的@synthesize
或提供getter和setter,您可以在协议中拥有属性。
@property(nonatomic,strong)UILabel *mylabel;
@synthesize mylabel = _mylabel;
Ex ->
-(void)setMylabe:(UILabel *) mylabel { //setter
}
-(UIlabel*)mylabel { // getter
}
@synthesize
已声明的属性即可。 - mAu