[学习笔记—Objective-C]《Objective-C 程序设计 第6版》第七章 类
来源:互联网 发布:域名被劫持是什么意思 编辑:程序博客网 时间:2024/04/26 02:48
本章的学习笔记以本书第六章的例题(两个分数的加法)为主线展开,逐步介绍重要的知识点。
Part 1. 合成存取方法
从Objective-C 2.0 开始,可自动生成设置方法和取值方法:通过属性。
接口文件:
@interface Fraction : NSObject@property int numerator, denominator; //分子,分母
实现文件:
@implementation Fraction@synthesize numerator, denominator;//告诉编译器生成一对设置方法和取值方法。
通过
@property
指令,就不需要在实现部分生成相应的实例变量。如果有称为
x
的属性,那么在实现部分会导致编译器自动生成一个设值方法setX
和取值方法x
。
Part 2. 使用点运算符访问属性
设值方法
[myFraction setNumerator: 1]; [myFraction setDenominator: 3]; //等价于 myFraction.numerator = 1; myFraction.denominator = 3;
Part 3. 局部变量
将一个分数约分的方法:
-(void) reduce { int u = numerator; int v = denominator; int temp; //u,v,temp 局部变量 while (v!=0) { temp = u % v; u = v; v = temp; } numerator /= u; denominator /= u;}
- 其他方法无法访问reduce方法的局部变量
- 默认初始化为nil,当方法返回的时候,变量的值都消失了;实例变量在多次方法调用时保持自己的值
Part 4. self 关键字
self关键字的用途:在方法内直接指明消息的接受者(是对象)。
-(void) add: (Fraction *) f { numerator = numerator * f.denominator + denominator * f.numerator; denominator = denominator * f.denominator; [self reduce]; //进行约分。 self 作为aFraction的引用,分数得到约简。(main函数中,计算对象 aFraction 和 bFraction的和,将结果直接约分)}
Part 5. 将对象作为参数
- 方法声明:
//add:方法的参数是Fracion类对象的一个引用。当传递一个对象作为参数时,实际上是传递了一个数据存储位置的引用。-(void) add: (Fraction *) f; //将分数与分数相加
- 方法展开:
-(void) add: (Fraction *) f { numerator = numerator * f.denominator + denominator * f.numerator; denominator = denominator * f.denominator;}
不能用这种方法直接指定参数f的实例变量。而是通过名字f标识这个对象,然后通过对f应用点运算符来获得实例变量。
Part 6. 将对象作为方法的返回值
在方法中创建新的分数(对象)来存储相加的结果并向消息的发送者返回新的Fraction
//返回一个对象。参数是对象。-(Fraction *) add: (Fraction *) f { //创建新的对象存储相加后的结果 Fraction *result = [[Fraction alloc] init]; //对象result里面自动生成了numerator 和 denominator result.numerator =numerator * f.denominator + denominator * f.numerator; result.denominator = denominator * f.denominator; [result reduce]; //对相加的结果约分 return result; //返回值}
0 0
- [学习笔记—Objective-C]《Objective-C 程序设计 第6版》第七章 类
- [学习笔记—Objective-C]《Objective-C 程序设计 第6版》第七章 类 课后题 7-6 解析
- [学习笔记—Objective-C]《Objective-C 程序设计 第6版》第四章 数据类型和表达式
- [学习笔记—Objective-C]《Objective-C 程序设计 第6版》第六章 选择结构
- [学习笔记—Objective-C]《Objective-C 程序设计 第6版》第八章 继承
- [学习笔记—Objective-C]《Objective-C 程序设计 第6版》第十章 变量和数据类型
- [学习笔记—Objective-C]《Objective-C 程序设计 第6版》第十一章 分类和协议
- [学习笔记—Objective-C]《Objective-C 程序设计 第6版》第十二章 预处理程序
- [学习笔记—Objective-C]《Objective-C 程序设计 第6版》第十八章 复制对象
- [学习笔记—Objective-C]《Objective-C-基础教程 第2版》第二章~第七章
- [学习笔记—Objective-C]《Objective-C 程序设计 第6版》第三章 类,对象和方法
- [学习笔记—Objective-C]《Objective-C 程序设计 第6版》开始
- [学习笔记—Objective-C]《Objective-C 程序设计 第6版》第四章 数据类型和表达式 课后练习题 4-10
- [学习笔记—Objective-C]《Objective-C 程序设计 第6版》第五章 循环结构 部分例题&课后题讲解
- [学习笔记—Objective-C]《Objective-C 程序设计 第6版》第九章 多态,动态类型和动态绑定
- [学习笔记—Objective-C]《Objective-C 程序设计 第6版》第十五章 数字 字符串和集合
- [学习笔记—Objective-C]《Objective-C 程序设计 第6版》第十七章 内存管理和自动计数
- 学习Objective-C程序设计 第七章练习
- Android手动显示和隐藏软键盘方法总结
- VIM code complete: YouCompleteMe
- Oracle 11g行列互换pivot和unpivot说明
- [leetcode] 115.Distinct Subsequences
- 2015070109 - 水杯
- [学习笔记—Objective-C]《Objective-C 程序设计 第6版》第七章 类
- Android-Webview支持缩放并隐藏讨厌的缩放控制条
- 想打造一款成功的移动应用?你最需要关注性能指标!
- ubuntu下安装boost环境
- how-to-install-kippo-an-ssh-honeypot-on-an-ubuntu-cloud-server
- 黑马程序员-OC语言-@synthesize关键字介绍和使用(听课笔记)
- 2015年7月1日 课设日志
- 2015070110 - java bin下的命令解释
- 通过Span设置TextView中字体的样式、大小