OCday05

day05 多继承

 

1.知识点回顾

1.分类

1.匿名分类

没有名的分类,又叫匿名类别、也叫类扩展。

作用:

就是你的类扩展写在类实现中.m文件中

1.成员变量(私有)

2.属性(私有)

3.方法(私有)

也有的人通过类扩展的方式 写在*.h文件中(具体问题具体分析)

2.有名分类

有名称的分类,用于对不知道源代码的类进行扩展的一种机制。

1.只能扩展方法(不能扩展成员  以及属性)

 

2.单例类

单例是一种设计模式

单例的作用:只能实例化一次分类,创建的对象是唯一的。

static  单例类 *对象指针 = nil;//nil表示对象空

+(类名 *)shareInstance

{

if(!对象指针)

{

对象指针 = [self new];

}

return  对象指针;

}

 

3.协议

是OC中的一个特有的语法。

@protocol  关键字来声明协议<NSObject>

//协议是一个共有的方法列表

@end

1.第一种用法  xxx.h

2.第二种用法  直接写在.h文件中(企业中常见)

 

作用:

1.分散接口

1.1协议委托中 ——>被委托类中去了

1.2使用协议可以实现 ——>接口(方法)的多继承

语法上只支持单继承 ——>类和类的关系

通过协议语法实现的方法(接口)的多继承

2.实现协议委托

3.实现协议委托并传值(反向传值)

4.往往和 id<协议> 让类更加具有通用性

 

4.协议委托

委托又是一种设计模式(委托 代理)是对象 和 对象之间一种通讯机制,是一对一的一种通讯方式。

当一个对象想做一件事却没有能力去做,另外一个对象有能力去做当前对象想做的事情,我们就可以委托这个有能力

去做这件事的对象做我们想做的事情。

委托

1.隐式委托

2.非正式协议委托

3.正式协议委托

委托类

委托人的属性@property(weak)id<协议>delegate

————>制定协议

1.方法(委托事件)

被委托类<遵守协议>

|

——————>实现协议中的方法

1.协议中的必选方法和可选方法

 

使用的时候:

1.创建委托类的对象

2.创建被委托类的对象

3.设置委托类的  委托人  属性

委托对象.delegate = 被委托人;

4.通过被委托人调用方法

[委托对象.delegate  方法1];

[委托对象.delegate  方法2];

 

 

二.多继承在OC中的实现

 

2.1通过协议来实现方法(接口的)多继承

【类A】                              【类B】

-(void)A;                          -(void)B;

【类C】

-(void)A;-(void)B;//想用AB方法

-(void)C;//自己还有C方法

 

三、OC中结构体

 

3.1OC常见的结构体

1.C风格的结构体

struct Student

{

//成员变量;

int age;

int no;

}

2.CGRect  由两个结构体组成,作用  就是可以保存一个对象在UI视图中得位置和大小。

其中  位置是由  CGPoint来保存的。

大小是由   CGSize来保存的。

struct CGPoint

{

CGFloat   x;//x轴坐标

CGFloat   y;//y轴坐标

}

 

struct CGSize

{

CGSi

 

}

struct CGRect

{

CGPoint  point;

CGSize  size;

}

都是创建了结构体这个类型的一个变量,是变量不是对象。

对象创建在堆中,变量创建在栈中。

 

3.2 NSValue  类型

NSValue  数据类型 就是能够把C语言中的数据类型转换成OC中使用的对象类型。

一般用于存储C语言中比较常见的结构体类型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值