[学习笔记—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
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 小孩蛋蛋大小不一样有积液怎么办 对派出所的笔录不服怎么办 蛋蛋让尿淹了发红有小红瘩达怎么办 手被皮筋弹肿了怎么办 手被皮筋勒肿了怎么办 皮筋把手挤肿了怎么办 猫被皮筋绑久肿了怎么办 抗链0高关节疼怎么办 近视800度老了怎么办 军检体重不达标怎么办 到交房租没有钱怎么办 房租没到期房东要收回怎么办 客户指定发快递我要怎么办? 跨境汇款被退回怎么办 汇款途径写错了怎么办 快递被菜鸟驿站退回怎么办 电脑登录账户已锁定怎么办 被外管局查到境外汇款买房怎么办 军校生复检被刷怎么办 企业私刻章拿去挂项目怎么办? 中通快递被退回怎么办 网易邮箱提示被修复怎么办 小孩屁股烫红了怎么办 8岁近视400度怎么办 部队体能差的人怎么办 上环5天同房了怎么办 肾结石有3mm了怎么办 4*3mm肾结石好痛怎么办 做完肾结石积水后迟续发烧怎么办 血糖高有肾结石反复发高烧怎么办 肾里面有小结石怎么办 大于2厘米的结石怎么办 双肾结石肾盏扩张怎么办 边防消防警卫部队改革义务兵怎么办 汽车年检尾气复检不合格怎么办 车辆年检尾气不合格复检怎么办? 在瓜子上买车复检有问题怎么办 更换车壳车架号怎么办 吸完甲醛的绿萝怎么办 如果公务员复检不合格有异议怎么办 国考公务员政审没有毕业证怎么办