Category,Extension,delegate 和protocol

1.为什么要用category(分类或类目)?

  有时候我们需要扩展一下现有的类,增加一下功能,如果有源码,修改一下即可,如果是第三方的类库,就需要category它
  
  的主要作用就是为没有源代码的类添加方法。
  
  步骤:新建文件 选择Objective-C Category模板  填写类目和分类名   在.h文件中添加方法声明  在.m添加方法的现
  
  在需要使用的地方进行调用。
  
  Category是非正式协议,我么可以在里面添加方法,但是不可以在其中添加成员变量,也就是不能添加属性。

2. category的优缺点?

  优点:可以简单的实现为某个类添加方法的情形,减轻了类的设计的难度
   
  缺点:(1)无法增加新的成员变量 (2)由于代码很分散,容易出bug,当方法名出现重名时,类别的优先级是高于类本身
  
  的,也就是说,如果类有一个foo()的方法,category也有一个foo()的方法,而我们使用foo()方法时,调用的是catego
  
  ry的foo()方法。
  
  所有cayegory的主要用途有三个:将类的实现代码分散到多个不同的文件和框架中,创建对死以后的方法的前向引用,向对
  
  象添加非正式协议。简化类的开发(当一个类需要多个程序协同,Category可以将同一个类根据用途分别放在不同的源文件
  
  中,从而便于程序员独立开发相应的方法集合)。
   
3.Extension(延展)?

  Extension的主要作用是为类添加“私有”方法。它的语法格式个Category很相似,相当于把Category的。h文件挪到了原始
  
  类的.m文件中,它主要是针对自己的类,必须有源代码的类。格式就是:在xxx.m文件中,@interface xxx(ExtensionNa
  
  me)//你的方法列表 @end

4.protocol和delegate

  protocold又叫协议是iOS开发中常用的技术,协议中是一套方法的声明,只有.h文件,接受协议的对象实现协议中定义的
  
  方法。
  
  协议定好以后,需要有类去遵守这个协议,实现协议里的方法,遵守协议即在.h的父类名后写上<协议名>,实现协议里的方
  
  法即在。m文件中实现协议中的方法,相当于给这个类添加了若干个方法,


转载于:https://my.oschina.net/u/2322034/blog/402522

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值