首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
其他好文
> 详细
3.属性、点语法
时间:
2016-02-16 20:40:54
阅读:
304
评论:
0
收藏:
0
[点我收藏+]
标签:
属性:属性是
一对setter、getter方法
。
属性的声明:在
.h文件
中声明,使用
@property
关键字声明属性
属性类型是setter方法中参数类型,也就是getter方法中返回值类型
属性名:name,不加下划线,只有实例变量才加下划线
@property (nonatomic, copy)NSString *name
以上这句等价于声明一对声明setter、getter方法
- (void)setName:(NSString *)name;
- (NSString *)name;
属性的实现:在.m文件中,使用@synthesize关键字实现属性
等号左边是属性名,等号右边是实例变量。
属性name对应实现的是setter方法,是为关联的实例变量进行赋值,而对应的getter方法,是获取关联实例变量的值。
@synthesize name = _name;
以上一句等价于一对实现setter、getter方法
- (void)setName:(NSString *)name{
_name = name;
}
- (NSString *)name{
return _name;
}
@synthesize在类的实现部分
在Xcode4.5以及之后的版本中,@sythesize可以省略,在.h文件中只使用@property声明属性即可。编译器默认声明对应的实例变量。(即不用在声明中出下划线对应的_name这种,而是由系统自动生成,但是生成的实例变量的可见度是私有的,子类不能访问)
如果在.h文件中只声明了@property,而在.m文件中重写了setter、getter方法,必须用@sythesize实现属性,才能生成实例变量。
属性的特性设置(属性的属性)
1、读写特性
①readwrite,
默认的
,可读可写,编译器声明了setter、getter方法。
②readonly,只读,编译器只声明了getter方法。
③setter=,设置编译器声明的setter方法的名字。
④getter=,设置编译器声明的getter方法的名字,一般用在BOOL类型的属性
@property(nonatomic, getter = isDeath)BOOL death;
@property
(
readwrite
,
setter
=aa:,
getter
=bb)
NSInteger
age;//修改age的setter、getter方法名
2、原子性
①atomic 原子性,默认修饰符,提供线程安全保护,
通过不断的加锁解锁实现在同一时刻实例变量只能被一个线程访问,但是不断的加锁解锁会耗费大量的CUP性能。
②
nonatomic
非原子性,setter、getter方法内部不会做多线程的处理,不保证安全,但大多数情况下使用。
3、语义性(属性中最重要的属性)
①assign 修饰的是非对象类型
基本数据类型(int float等)
、delegate使用
@property
(
nonatomic
)
CGFloat
height;
//默认readwrite、assign
②retain 对象类型
③copy
也是用来修饰对象类型的属性,但是一定要保证,代表属性类型的这个类,必须
接收了NSCopying协议
,而且
实现了copyWithZone:方法
。
字符通常用copy修饰。
@property
(
nonatomic
,
copy
)
NSString
*major;
每个
语义都有各自对应的getter、setter方法可以不使用编译器的方法自己自定义方法。
在类的内部,自己实现setter、getter方法:
①
语义设置为
assign
时,setter、getter的内部实现,
直接赋值
。
②语义设置retain时,间接赋值
③语义设置copy时,间接赋值
点语法:
点语法是一种快捷访问属性的方法
在不同的语境下,点语法会代指setter、getter方法
如果点语法出现在等号的左边,并且存在赋值意义,那么就是setter方法
如果点语法出现在等号右边,那么就是初值的getter方法
3.属性、点语法
标签:
原文地址:http://www.cnblogs.com/aoliaoli/p/5193540.html
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
分布式事务
2021-07-29
OpenStack云平台命令行登录账户
2021-07-29
getLastRowNum()与getLastCellNum()/getPhysicalNumberOfRows()与getPhysicalNumberOfCells()
2021-07-29
【K8s概念】CSI 卷克隆
2021-07-29
vue3.0使用ant-design-vue进行按需加载原来这么简单
2021-07-29
stack栈
2021-07-29
抽奖动画 - 大转盘抽奖
2021-07-29
PPT写作技巧
2021-07-29
003-核心技术-IO模型-NIO-基于NIO群聊示例
2021-07-29
Bootstrap组件2
2021-07-29
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!