我有一些UIViewController
子类,我希望它们共享一个名为session
的属性,它处理“已登录”状态。在协议中定义@property
我知道我可以使用父类,但这是非常明确的,所以我想知道我是否可以通过共享协议“强制执行”session
属性。
我从来没有见过在协议中定义的显式属性(显然你可以定义setter和getter),那么在协议内定义一个属性是一个可取的模式?
我有一些UIViewController
子类,我希望它们共享一个名为session
的属性,它处理“已登录”状态。在协议中定义@property
我知道我可以使用父类,但这是非常明确的,所以我想知道我是否可以通过共享协议“强制执行”session
属性。
我从来没有见过在协议中定义的显式属性(显然你可以定义setter和getter),那么在协议内定义一个属性是一个可取的模式?
@property
也可以出现在协议或类别的声明中。
表示在official apple documentation。所以没有问题。
是,使用的协议有可能添加属性:在每一个采用这个协议类
@protocol MyProtocol <NSObject>
@property (nonatomic, retain) NSFoobar *baz;
@end
而且@synthesize baz;
(或者你可以使用关键字@optional
标记声明的属性为可选)。
新的自动合成在这里很有趣... – 2012-08-11 14:01:14
在.h文件中:
@property(nonatomic,strong)UILabel *mylabel;
在.m文件:
@synthesize mylabel = _mylabel;
编译器将创建getter和setter方法mylabel。
Ex ->
-(void)setMylabe:(UILabel *) mylabel { //setter
}
-(UIlabel*)mylabel { // getter
}
这是个好消息:-) – Besi 2012-08-11 10:10:18