[学习笔记—Objective-C]《Objective-C-基础教程 第2版》第十一章 属性
来源:互联网 发布:赛鱼机源码 编辑:程序博客网 时间:2024/04/25 20:29
11.1 使用属性值
@property float rainHandling;//表明此类具有float类型的属性,其名称为rainHandling
注意:属性的名称不必与实例变量名称相同。
@synthesize rainHandling;//表示创建了该属性的访问代码
注意:使用属性后,可以不声明实例变量,编译器会声明。
有两个地方可以添加实例变量声明:
- 头文件:让子类直接通过属性访问变量
- 实现文件:变量只属于当前类
点表达式:
- 点表达式出现在(=)的左边:setter方法
- 点表达式出现在(=)的右边:getter方法
注意:如果访问属性提示访问的对象不是struct类型,请检查当前类是否已包含了所需的必备头文件
11.2 属性扩展
属性同样适用于int,char,BOOL,struct类型,也可以定义一个NSRect对象的属性
保留死循环(retain cycle):Car对象拥有engine对象,但是engine对象不能反过来拥有Car对象。
copy特性
- name存取方法:
- (void)setName: (NSString *)newName { [name release]; name = [newName copy];} // setName- (NSString *)name { return (name);} // name
等同于:
//name属性是copy特性@property (copy) NSString *name;@synthesize name;
retain特性:
- engine 的存取方法:
- (void) setEngine: (Engine *) newEngine{ [newEngine retain]; [engine release]; engine = newEngine;} // setEngine- (Engine *) engine{ return (engine);} // engine
等同于:
//engine属性使用的是保留和释放特性@property (retain) Engine *engine;@synthesize engine;
noatomic特性:iOS程序经常使用的技术,资源有限的设备上获得更好的性能。如果自己定义了存取方法,那么必须使用nonatomic特性。
默认特性:如果没有为属性指定任何特性,它们会默认使用nonatomic和assign特性。
11.21 名称的使用
属性的名称一般与支持属性的实例变量名称相同。
有时程序员希望实例变量是一个名称,而公开的属性是另一个名称。
@property(copy)NSString *name;@synthesize name = appellation;// 编译器将创建-setName:和-name方法,但在实现代码中用的是appellation实例变量。
注意:
直接访问实例变量:self.name
使用访问方法进行赋值:[self setName:@"Car"];
11.22 只读属性
对于只能读取,无法更改的值:
@property(readonly)float shoeSize;
注意:只生成一个getter方法而不会生成setter方法
11.23 自己动手
@dynamic
告诉编译器不要生成任何代码或创建相应的实例变量。
改变方法名:
使用getter=和setter=特性就可以自定义想要的方法名称
@property (getter=isHidden) BOOL hidden;//告诉编译器生成名为isHidden的getter方法,并生成名为默认setHidden:的setter方法
注意:属性只支持替代-setBlah和-blah方法,但不支持那些需要接收额外参数的方法
0 0
- [学习笔记—Objective-C]《Objective-C-基础教程 第2版》第十一章 属性
- [学习笔记—Objective-C]《Objective-C-基础教程 第2版》第二章~第七章
- [学习笔记—Objective-C]《Objective-C-基础教程 第2版》第八章 Foudation Kit 介绍
- [学习笔记—Objective-C]《Objective-C-基础教程 第2版》第九章 内存管理
- [学习笔记—Objective-C]《Objective-C-基础教程 第2版》第十章 对象初始化
- [学习笔记—Objective-C]《Objective-C-基础教程 第2版》第十二章 类别
- [学习笔记—Objective-C]《Objective-C-基础教程 第2版》第十三章 协议
- [学习笔记—Objective-C]《Objective-C 程序设计 第6版》第十一章 分类和协议
- 《Objective-C基础教程》学习笔记第十一-十三章
- 《Objective-C基础教程》第11章 属性
- Objective-C学习笔记第十一章特性
- Objective-C基础教程学习笔记
- 《Objective-C基础教程》学习笔记第二章
- 《Objective-C基础教程》学习笔记第八章
- 《Objective-C基础教程(第2版)》pdf
- Objective-C基础教程(第2版)学习记录点滴
- 《Objective-C基础教程》第11章 属性
- [学习笔记—Objective-C]《Objective-C 程序设计 第6版》第四章 数据类型和表达式
- The Unique MST (POJ 1679)
- MFC修改文本框和字体颜色 加载图片
- 类似ios的picker的风格地址选择控件
- 设计一个函数:将一维整型数组中的元素逆序存放
- 《关于多代理系统的研究》02
- [学习笔记—Objective-C]《Objective-C-基础教程 第2版》第十一章 属性
- 黑马程序员--学习C语言文件操作
- 【Linux探索之旅】第一部分测试题
- Ecllipse
- 等额本息公式背后的含义
- 常用布局
- 调整数组顺序使奇数位于偶数前面
- 利用ViewPager实现可左右滑动的Action Tab
- 掌握git