美文网首页
Protocol,Delegate,Category,Exten

Protocol,Delegate,Category,Exten

作者: 西门丨不吹雪 | 来源:发表于2016-08-01 16:43 被阅读92次

@protocol是我们协议的标识,协议中的方法有两种,一种是必须实现的,另一种是可选择实现的。这是一种间接扩充功能的方式,协议中只有一堆方法的声明,只有.h文件。协议的定义以@protocol开始,以@end结束。使用时需要类服从协议,实现协议中的方法来扩充功能,而且只能扩充方法,不能扩充实例变量。局限于必须要拥有该类的源代码。

@protocolSayHello
//必须实现的方法,默认方法就是必须实现的
@required
-(void)sayHello;
//可选择实现的方法
@optional
-(void)sayByeBye;

Category:

•1;Category:也叫分类,类目。是为没有源代码的类扩充功能。
•2;扩充的功能会成为原有类的一部分,可以通过原有类或者原有类的对象直接调用,并且可继承。
•3;该方式只能扩充方法,不能扩充实例变量。
** Category**的使用:
•1;使用类目添加的方法首先需要在对应的类中导入类目的.h文件
•2;添加的方法是通过类目为源代码的类(eg:NSString)添加的一个类方法,因此该方法的调用需要原有类名调用。

** Extension:**

使用场景:为能够获得源代码的类添加私有的实例变量和方法
•注意:延展操作的类必须是能够获得源代码的类(具有.m文件的类)
语法格式:1;Extension的语法格式和Category很相似,相当于把Category的.h文件挪到了原始类的.m文件中。2;使用延展为一个类添加一个私有的方法,同时添加私有的实例变量存储对应的信息。
Extension的使用:通过延展定义的方法属于私有方法,外界没有访问权限,只能在当前类的.m文件中访问。
** Category**和Extension的区别:作用上:Category:为没有源代码的类添加方法。Extension:管理类私有方法。格式上:Category;定义一对.h和.m。Extension;把代码写到原始类的.m中。

** delegate**:代理,主要任务是帮忙完成一些我们不想做的事情。

使用场景:当一些任务不想去实现,想让别人去实现,就可指定一个代理,去帮助完成,只需通知代理何时去做这些事情即可。
delegate设计模式的使用我们首先需要明白三个要素:委托方(委托别人去执行某些操作的人/对象),代理方(被委托去执行某些操作的人/对象),协议(Protocol:委托方需要代理方执行的操作)。

相关文章

  • Protocol,Delegate,Category,Exten

    @protocol是我们协议的标识,协议中的方法有两种,一种是必须实现的,另一种是可选择实现的。这是一种间接扩充功...

  • iOS的Category、Protocol、Delegate的简

    注:这是之前写的OC代码,搬到这里小记一下。现在swift是趋势,可自行转化,重在理解。 运行环境 演示图 代码使...

  • 使用category为delegate和protocol解耦

    项目中我们有时候会遇到一些情况,需要经常使用某个代理,但是又不是都需要遵从协议,这时候就可以用我的这种方式完全解耦...

  • 16、类别、扩展与通知

            Catrgory & Extension Category 给原有的类扩展特有的方法; Exten...

  • iOS基础03--category & extensio

    iOS基础03--category & extension & protocol Category(分类) 先来一...

  • delegate与protocol

    1.Protocol协议 Protocol,简单来说就是一系列不属于任何类的方法列表,其中声明的方法可以被任何类实...

  • delegate和protocol

    一直对protocol和delegate的认识十分模糊,今天看了些文章,由此记录一下。文章链接:http://ha...

  • Swift小知识

    1. 关于Swift中Protocol 1. 在 Swift 中,Delegate 就是基于 Protocol 实...

  • iOS 类别和类扩展

    category和extensions不同在于extensions可以添加属性,并且添加的方法必须实现,exten...

  • Swift extension 和 protocol exten

    Swift extension Extensions in Swift can: Add computed ins...

网友评论

      本文标题:Protocol,Delegate,Category,Exten

      本文链接:https://www.haomeiwen.com/subject/kuaxsttx.html