Objective_移动开发_编程开发_程序员俱乐部
中国优秀的程序员网站
程序员频道
CXYCLUB技术
地图
最新资讯
|
百度新闻
|
GOOGLE地图
|
RSS订阅
|
更多
职场话题
生活休闲
恋爱交友
程序人生
学习进修
职业发展
项目管理
求职面试
程序员创业
JAVA
.NET
C/C++
Ruby
Delphi
JavaScript
PHP
ASP
JSP
HTML
XML
移动开发
开发工具
其他
编程开发
数据库
操作系统
新闻资讯
互联网
非技术区
非技术区
生活休闲
恋爱交友
职业发展
求职面试
程序人生
移动开发
开发工具
DB2
MySql
Sybase
开发
JAVA
.NET
PHP
C/C++
数据库
SQL Server
Oracle
互联网
运营
推广
营销
SEO
系统
Linux
Unix
Windows
资讯
动态
产品
人物
创业
职场
学习
管理
热搜:
陌陌
高手
循环
class
instance
比特币
Win8
Amazon
摄像头
NullPointerException
removeview
viewgroup
onAnimationEnd
二维码
controller
陌陌
高手
循环
class
instance
比特币
Win8
Amazon
摄像头
NullPointerException
更多>>
您所在的位置:
程序员俱乐部
>
编程开发
>
移动开发
> Objective
Objective
2015/4/14 21:28:50 C中属性和点语法的使用
程序员俱乐部
我要评论(
0
)
摘要:
一、属性属性是Objective—C2.0定义的语法,为实例变量提供了setter、getter方法的默认实现能在一定程度上简化程序代码,并且增强实例变量的访问安全性OC中的属性机制提供了便捷的设置和获取实例变量的方式,或者说属性提供了一个默认的设置器和访问器的实现;属性提供的方法是现实可配置的,属性的好处:相当于自己编写这一对方法,属性提供了一系列清晰分明的说明参数来定义设置器和访问器的行为,编译器可以根据你设置的说明参数为你生成相应的方法,减少你的代码量和维护工作量设置器
标签:
一、属性
属性是Objective—C 2.0定义的语法,为
实例变量
提供了setter、getter方法的默认实现能在一定程度上简化程序代码,并且增强实例变量的访问
安全性
OC中的属性机制提供了便捷的设置和获取实例变量的方式,或者说属性提供了一个默认的设置器和访问器的实现;属性提供的方法是现实可配置的,属性的好处:相当于自己编写这一对方法,属性提供了一系列清晰分明的说明参数来定义设置器和访问器的行为,编译器可以根据你设置的说明参数为你生成相应的方法,减少你的代码量和维护工作量
设置器(setter)与访问器(getter),提供了一个外界操作类内部属性的通道。因为类的属性,一般是私有的(private)假如没有这个方法那么这个属性的织就不能被外界所改变
(一)、属性的定义
属性的声明:使用@property声明属性
例如:
@property NSString *name;
相当于@interface中声明了两个方法(setter和getter):
- (void)setName:(NSString *)name;
- (NSString *)getName;
(二)、属性的实现
属性的实现:使用@synthesize实现属性
例如:
@ynthesize name = _name;
相当于@implementation实现了setter、getter
- (void)setName:(NSString *)name
{——}
- (NSString *)getName
{——}
例如定义一个完整的Person类,包含实例变量、属性、初始化方法、便利
构造器
方法以及功能方法:
h文件中如下:
m文件中如下:
main.m文件中如下:
二、属性的属性
Objective-C提供属性是得目的是为了简化
程序员
代码
为属性提供了一些
关键字
用以控制setter、getter的实现细节
这些关键字我们称为属性的属性(attribute)
一共3大类attribute
第一类
:读写性控制 (readonly、readwrite、stter、getter)
readonly,告诉编译器,只声明getter方法(无setter方法)
例如:
@property(readonly)NSString *name;
等价于
- (NSString *)getName;
readwrite,告诉编译器,既声明setter又声明getter
例如:
@property(readwrite)NSString *name;
等价于
- (void)setName:(NSString *)name;
- (NSString *)getName;
readwrite是读写性控制的默认设置
第二类
:原子性控制 (nonatomic、atomic)
atomic。setter、getter方法在多
线程
访问下是绝对安全的,即setter、getter内部做了多线程访问处理。原子性控制的默认设置是atomic
nonatomic。setter、getter方法内部不会做多线程访问处理,仅仅是普通的setter、getter方法
程序开发过程中,setter、getter处处都在用,如果使用atomic,需要不断的对setter、getter枷锁
解锁
以保证线程访问安全,会很占用系统资源,降低系统性能
通常设置为nonatomic,某些属性需要
线程安全
的时候,才定义为atomic。
例如:
@property(readwrite,nonatomic)NSString *name;
等价于
- (void)setName:(NSString *)name;
- (NSString *)getName;
第三类
:语义设置 (assign、retain、copy)
assign。setter、getter内部实现是直接赋值
例如:
@property (nonatomic,assign)NSString *name;
- (void)setName:(NSString *)name {
_name = name;
}
- (NSString *)name {
return _name;
}
retain。setter、getter放入内部实现会做
内存
优化
copy。setter、getter的内部实现也会做内存优化
如果属性是非对象类型(比如int,float等)属性的语义设置使用assign
如果属性是对象类型(比如NSString、NSArray等)属性的语义设置使用retain
如果属性是对象并想得到参数的copy,使用copy关键字
三、点语法
点语法是Objective-C 2.0中定义的语法格式。提供了一种便捷的属性访问方式
点语法的使用
分时符合系统默认setter、getter书写格式的方法都可以使用点语法
例如:
[person1 setName:@“zhangsan”]
;可以等价写成
person1.name = @“zhangsan”;
。
NSString *name = [person1 name];
可以等价写成
NSString *name = person1.name;
属性是一对getter、setter方法,点语法是属性的另一种调用格式
使用点语法进行赋值:
Person *person = [[Person alloc] init];
person.name = @"zhangsan";
person.age = 33;
person.gender = @"male";
NSLog(@"%@,%ld,%@",person.name,person.age,person.gender);
上一篇:
UI常用控件
下一篇:
课堂练习之最高折扣,最低优惠规划
相关文章
查看所有评论(
0
)
我要评论
发表评论
用户名:
匿名
最新文章
iOS开发_O..
cocos2d..
·
Objective
·
UI常用控件
·
iOS开发_Objective-C_数组
·
cocos2dx工程中接入支付宝sdk
·
Android 图片开发内幕系列第一篇
·
Android中bitmap图片透明度的
·
[转]Android中Spinner下拉
·
java int与integer的区别
·
iOS返回一个前面没有0,小数点后保留两
·
关于Android项目中添加图片等资源在
·
AlertDialog中EditText
·
Bitmap那些事之内存占用计算和加载注
·
iOS 高级开发 runtime(三)
·
IOS中的手势详解
·
ndk开发之编译安卓c/c++程序
最新标签
陌陌
高手
循环
class
instance
比特币
Win8
Amazon
摄像头
NullPointerException
今日热点
·
ListView问题解决办法总结
·
JSP+WAP2.0规范
·
解决android2.2把安装程序放入S
·
圆角PopupWindow对话框和圆角E
·
android SurfaceView
·
android---->进度条(P
·
完全退出android程序
·
android 切换卡(TabWidge
·
android 获取ListView列中
·
android ListView 使用
推荐文章
android..
android..
·
android Canvas让我很困惑
·
android ListView的分段显
·
iPhone中使用ShareKit一键分
·
Android 2.1 从SD卡导入联系
·
android中设置List
·
android HTC Desire (
·
PC机上体验Android x86操作系
·
Android make脚本简记
·
Android PreferenceAc
·
android文件上传(android端
·
Android手势研究(textview
·
Android手势研究(textview
·
android的拖拽问题--onTouc
·
TableView 的使用 实例二
·
android 选项卡(TabHost)
English
|
关于我们
|
诚聘英才
|
联系我们
|
网站大事
|
友情链接
|
意见反馈
|
网站地图
Powered by
程序员俱乐部
程序提供: HugoCMS 2.0
网站备案:苏ICP备11048748号-1