类目、延展、协议

类目、延展、协议

1、类目:(Category)的基本概念

名字:原有类名字+现有类名字

是在原有的基础之上 添加方法,在使用的时候,只需要用原有类实例化出来的对象,调用即可


如果在类目中覆盖现有类的方法,这样会引起super消息的断裂,因为类目中的方法具有更高的优先级,因此,一般不要覆盖现有类中的方法

实际开发在什么情况下使用?

1)扩展已经封装好的类 (不希望再改变原有类)

2)团队里面,分工开发一个模块的时候

类目(Category)和子类有什么共同点

子类:可以扩展父类的方法

类目:可以扩展原有类的方法

    

子类:可以添加实例变量、属性

类目:不可以添加实例变量、属性

        

扩展方法的调用方式

子类:用子类的对象调用扩展的方法

类目:依然使用原有类的对象调用


2、延展(Extension)的基本概念和方法

xcode4.3之前,直接使用self调用方法,那时候会报错,所以得用延展

类的延展就是在类中添加私有方法,延展中声明的方法在类本身的@interface类名()和它对应的@end之间实现

类有时需要方法只有自己所见,我们可以通过延展的方式定义类的是有方法


3、协议(Protocol)

1)协议就是共同遵守的一个条约

2)协议是可以被任何类实现的方法,协议本身不是类,它是定义了一个其他类可以实现的接口

3)协议是只声明,不实现


4)没有实现的类目 又叫 非正式协议

因为一般情况下类都从NSObject继承,所以NSObject的类目中所有声明的方法,这个类可以实现也可以不实现。

非正式协议是以圆括号表示,而正式协议是以<>表示。

如果子类要创建协议时,只要在基类遵守某一协议就行。


5)在哪一个类里面导入了协议,就在哪一个类里面实现这个协议方法

//@protocol 协议名 <NSObject>

//具体内容

//@end

协议里面默认的方法是强制实现的方法:

@protocol:必须强制是吸纳,不识闲就报错

例: 


@optional:选择实现的(可实现、可不实现,不会报错)

例: 


6)respondsToSelector:判断是否能够响应一个方法

@selector(选择的方法):方法选择器,是用来选择方法的

例: 



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值