1,类别的意义

//      类别:类的扩展,能够向已有的类中添加新的方法(“属性”)
//           并且添加的代码不用写在已有的类中
//           但是,添加的方法属于这个已有的类。

//一个类别要知道是谁的类别,所以要在类别的.h文件当中导入扩展类的头文件
//一般情况下这个头文件由系统自动添加。

//类别定义格式:
//@interface 扩展类名(类别名)
//一般情况下,也由系统自动创建

//在类别中声明的方法必须实现,如果不想实现那就不要声明
//当然,不实现也不会抱错,但是会有隐患.

ps
//        关于类别中添加属性的特别说明:
//        类别中本质上是不允许添加属性的,因为类别中
//        不允许添加@synthesize。所以,添加的属性没有办法访问到
//        如果强制调用就会有很多❌错误
        
//        凡事都有例外;在IOS开发过程阶段,类别会和类
//        写在同一个文件当中,这个时候就能够使用类别
//        添加的属性了。。。。

不光能给自己创建的类添加类别,还能给系统的类添加
添加类别实际上就是添加方法二不去动原来的类。

2,类别的作用

类别能够在不动相应的类的前提下给类增加方法。

3,匿名类别

//在匿名类别(延展)中声明方法必须在对应类实现这个方法
//匿名类别不能对看不到.m文件的类扩展。
//匿名类别和类别在使用的时候有什么区别

//匿名类别(延展)在导入头文件的时候必须写在.m中
//原因:没有原因。

4,协议 
             #import <Foundation/Foundation.h>

@protocol Biaobai <NSObject>
//协议中写的是方法的声明,实现协议就是实现了协议中声明的方法。

@optional
-(void)biaobai;

//协议中声明的方法没有特殊情况的话可以不用都实现。
-(void)huashibiaobai;

//@optional可选实现或不实现的
//@required必须实现的
@end

//一个类去拜托另一个类的对象去做这个类不会做的方法
        //寻找代理,委托模式---代理委托。

@interface Baye : NSObject

//id<Biaobai>delegate
//这个id类型的对象,表示这个对象实现了表白协议中声明的方法
//delegate这个对象遵守了这个Biaobao协议

//ps:拜托delegate替你做某事的时候要先确认delegate会做这件事
@property(retain,nonatomic)id<Biaobai> delegate;

-(void)baituobiaobai;

@end

#import <Foundation/Foundation.h>
#import "Biaobai.h"
//当一个类实现了某个[协议]的时候,用<>写在类声明的后面

//被拜托的人(也就是作为delegate的那个人)得真的会做这件事
@interface Siye : NSObject<Biaobai>

@end

//pss:基本上,在OC当中,就目前我们所学的知识里,能用到id类型的也就是代理和委托,别的地方别乱用。
看到id和delegate就得想到代理,委托

id类型表示泛型,它其中什么属性和方法都没有,所以用id类型的任何方法都会有警报说找不到这个方法。

类别:对类进行外部扩展,能够提供如下便捷操                 
           作:在任何想要使用扩展的方法的地方,  
           只要导入类别头文件,即可使用,因为类别中扩展的方法,都在类别
           内部实现了。
匿名类别:对类进行内部扩展,(本质上是为了弥补OC中没有私有  
                    这一概念而产生的)
                    匿名类别中声明的属性,方法,都是私有的,不要在外部使  
                    用,匿名类别的头文件导入在.m当中。
                    ps:成员变量,属性,方法(直接调用成员变量,self。调用
                          属性 _ 调用成员变量)
协议:声明某个类拥有某个方法。ps:协议的出现弥补了id类型[不能
            找到某个方法的警报问题]pss:协议中不要声明属性(特除)
委托:人话:拜托[拥有某个方法的[对象]做[某个方法]]

OC中继承代理委托类别相关推荐

  1. RAC -代替OC 中的代理

    学以致用, 有的时候学习了很多理论 却还是忘了实践 OC 中代替代理 简洁编程 #import "ViewController.h" #import <ReactiveObj ...

  2. 在C#中使用代理的方式触发事件 (委托和事件 ) (转)

    From:  http://www.cnblogs.com/gzhnan/articles/1859477.html 在C#中使用代理的方式触发事件 (委托和事件 ) 事件(event)是一个非常重要 ...

  3. JAVA面试要点006---.net中的委托与java中的代理模式和委托

    1.1.1 定义 委托是一种引用方法的类型.一旦为委托分配了方法,委托将与该方法具有完全相同的行为.委托方法的使用可以像其他任何方法一样,具有参数和返回值,如下面的示例所示: //Code in C# ...

  4. OC中类别、扩展、协议与托付

    类别(category)--通过使用类别,我们能够动态地为现有的类加入新方法.并且能够将类定义模块化地分不到多个相关文件里.通常仅仅在类别中定义方法. 类别,接口部分的定义,通常该文件命名为已有&qu ...

  5. JavaScript系列—简述JS中的事件委托和事件代理

    JS中的事件委托和事件代理 什么是事件委托? 事件委托还有一个名字叫事件代理,JS高程上讲:事件委托就是利用事件冒泡,只制定一个时间处理程序,就可以管理某一类型的所有事件.我用取快递来解释这个现象: ...

  6. OC中常见面试题汇整篇

    当页面跳转的时候,如何实现导航条和页面同时出现?因为他两个经常出现不同步的现象? 如何将tablview强制转换成UIScrollow? 当一个界面在6s上正好可以完全呈现,那在4s上面你是如何处理的 ...

  7. OC中@interface、@implementation、@protocal

    Java中的interface和implementation OC中的interface和implementation protocol 注意 Java中的interface和implementati ...

  8. iOS开发篇——OC 协议和代理设计模式介绍

    蓝鸥iOS培训讲师推荐:好久没和大家沟通了,没和大家沟通了,今天就和大家说说有关OC内容协议和代理设计模式.首先要讲的是协议 一.协议 OC中的协议和接口有些相似,协议中定义的方法,在类中实现.协议一 ...

  9. vue学习:事件传递(冒泡和捕获),事件委托,jquery中的事件委托,$event 获取元素,vue事件修饰符

    事件传递 ----冒泡和捕获 DOM事件标准定义了两种事件流,这两种事件流分别是捕获和冒泡. 和许多Web技 术一样,在它们成为标准之前,Netscape和微软各自不同地实现了它们.Netscape选 ...

  10. OC中Runtime浅析

    近期了解了一下OC的Runtime,真的是OC中非常强大的一个机制,看起来比較底层,但事实上能够有非常多活用的方式. 什么是Runtime 我们尽管是用Objective-C写的代码,事实上在运行过程 ...

最新文章

  1. 直播APP常用动画效果
  2. 重磅 | MIT启动IQ计划:研究人类智能,让全世界的机构共同合作
  3. 仿真的数据能否用来深度学习_数字孪生弥合了深度学习的数据鸿沟
  4. 人机交互界面设计大作业_为什么说大多数UI设计、大数据、人工智能等培训班不靠谱?...
  5. 用汇编的眼光看C++(之算术符重载陷阱)
  6. 句句真研—每日长难句打卡Day14
  7. 移动端开发—流式布局
  8. linux mysql5.5.50_linux下安装mysql5.5
  9. java 符号引用与直接引用
  10. slf4j log4j logback关系详解和相关用法
  11. Atitit dsl对于数组的处理以及main函数的参数赋值
  12. matlab安装前有兼容性问题,matlab安装及问题解决
  13. 小飞鱼通达二开 通达OA2017集成MongoDB(图文)
  14. 5.1数学建模与MATLAB--层次分析法(评价类问题)
  15. git pull 报错:Exiting because of unfinished merge.
  16. 《数据驱动 | 装备制造创新集群智慧化转型》
  17. 现代诗与古典传统的关系
  18. 为什么是三次握手和四次挥手
  19. PySOT测试报错:AssertionError: /pysot/experiments/siamrpn_r50_l234_dwxcorr/Basketball/img/0001.jpg
  20. Node* create()的含义

热门文章

  1. 记住鲁迅的所有文章,因为他具有深远的意义,在当下意义重大。
  2. Poi HSSFCellStyle.ALIGN_CENTER VERTICAL_CENTER 等爆红的解决办法
  3. PDF页码怎么设置?如何给PDF文件设置页码
  4. linux sftp put 文件夹,使用sftp命令上传文件夹方法
  5. Python脚本实现淘宝秒杀
  6. java char取值范围是_Java 基本数据类型取值范围讲解
  7. PhotoShop 之移动选区
  8. 《Real-Time Rendering 4th Edition》全文翻译 - 第5章 着色基础(下)5.5 ~ 5.6
  9. logstash grok mysql_日志分析logstash插件-grok详解
  10. C++ 多线程(一)入门