OC重新开始(八)属性
程序员文章站
2022-07-15 17:11:17
...
属性
属性的概念
一般来说属性指的是一个对象的属性或特征。类似于一个篮球把它当做一个对象的话,篮球的价格、大小就是它的属性。而在OC中属性还被赋予了从外部可以访问的对象的属性。
属性须知
- 能自动生成访问方法
- 能为制定的实例自动生成getter和setter方法,也能手动
- 能删除类的接口文件中的访问方法
- 自动生成实例变量
- 能自动生成同名的实例变量
- 更简单的调用访问方法
- 可以通过(.)语法来调用访问方法
- 属性的内省
- 动态的查询类中声明的属性以及属性的名称和类型
属性的声明
属性的声明相当于同时声明了读写两个访问方法。通过@property编译器命令声明,后面接上属性类型和名称。
@interface Basketball : Ball
{
NSString *name;
}
- (id)initWithName:(NSString *)str;
@property int length;
@end
也可以添加readonly等限制属性。
属性的实现
@implementation Basketball
- (id)initWithName:(NSString *)str{
if((self = [super init])!=nil){
name = str;
}
return self;
}
- (int)lengh{
return 10;
}
@end
也可以通过@synthesize,一行内生成getter和setter。
@synthesize name;
也可以通过@dynamic手动声明
@dynamic length;
@synthesize
通常情况下@property声明的属性名称和实例名称是一样的,但有时候会不同可以通过@synthesize绑定。
@synthesize length = high;/*完成绑定*/
通过@synthesize自动生成实例变量
给属性指定选项
种类 | 选项 | 说明 |
---|---|---|
读写属性 | readonly | 只读 |
readwrite | 读写 | |
赋值时候的选项 | assign | 单纯赋值 |
retain | 进行保持操作 | |
unsafe_unretained | 同assign一样(ARC) | |
strong | 同retain一样(ARC) | |
weak | 弱引用(ARC) | |
copy | 复制对象 | |
原子性操作 | nonamatic | 非原子性操作、非线性安全 |
最后这个原子性是多线程中使用的,如果是原子性的就意味着在多线程下访问属性是安全的,在执行过程中不能打断,而nonamatic则是不安全的,但是对于使用频繁且不考虑多线程竞争的访问方法,可以加上nonamatic。
属性的继承
子类可以使用父类中定义的属性,也可以重写访问方法,但是同父类中的指定名称必须完全一样(特殊情况即是父类定义的readonly在子类中可以变成readwhite)
上一篇: java:执行linux sudo命令
下一篇: 类和对象(一)