OC中继承代理委托类别
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中继承代理委托类别相关推荐
- RAC -代替OC 中的代理
学以致用, 有的时候学习了很多理论 却还是忘了实践 OC 中代替代理 简洁编程 #import "ViewController.h" #import <ReactiveObj ...
- 在C#中使用代理的方式触发事件 (委托和事件 ) (转)
From: http://www.cnblogs.com/gzhnan/articles/1859477.html 在C#中使用代理的方式触发事件 (委托和事件 ) 事件(event)是一个非常重要 ...
- JAVA面试要点006---.net中的委托与java中的代理模式和委托
1.1.1 定义 委托是一种引用方法的类型.一旦为委托分配了方法,委托将与该方法具有完全相同的行为.委托方法的使用可以像其他任何方法一样,具有参数和返回值,如下面的示例所示: //Code in C# ...
- OC中类别、扩展、协议与托付
类别(category)--通过使用类别,我们能够动态地为现有的类加入新方法.并且能够将类定义模块化地分不到多个相关文件里.通常仅仅在类别中定义方法. 类别,接口部分的定义,通常该文件命名为已有&qu ...
- JavaScript系列—简述JS中的事件委托和事件代理
JS中的事件委托和事件代理 什么是事件委托? 事件委托还有一个名字叫事件代理,JS高程上讲:事件委托就是利用事件冒泡,只制定一个时间处理程序,就可以管理某一类型的所有事件.我用取快递来解释这个现象: ...
- OC中常见面试题汇整篇
当页面跳转的时候,如何实现导航条和页面同时出现?因为他两个经常出现不同步的现象? 如何将tablview强制转换成UIScrollow? 当一个界面在6s上正好可以完全呈现,那在4s上面你是如何处理的 ...
- OC中@interface、@implementation、@protocal
Java中的interface和implementation OC中的interface和implementation protocol 注意 Java中的interface和implementati ...
- iOS开发篇——OC 协议和代理设计模式介绍
蓝鸥iOS培训讲师推荐:好久没和大家沟通了,没和大家沟通了,今天就和大家说说有关OC内容协议和代理设计模式.首先要讲的是协议 一.协议 OC中的协议和接口有些相似,协议中定义的方法,在类中实现.协议一 ...
- vue学习:事件传递(冒泡和捕获),事件委托,jquery中的事件委托,$event 获取元素,vue事件修饰符
事件传递 ----冒泡和捕获 DOM事件标准定义了两种事件流,这两种事件流分别是捕获和冒泡. 和许多Web技 术一样,在它们成为标准之前,Netscape和微软各自不同地实现了它们.Netscape选 ...
- OC中Runtime浅析
近期了解了一下OC的Runtime,真的是OC中非常强大的一个机制,看起来比較底层,但事实上能够有非常多活用的方式. 什么是Runtime 我们尽管是用Objective-C写的代码,事实上在运行过程 ...
最新文章
- 直播APP常用动画效果
- 重磅 | MIT启动IQ计划:研究人类智能,让全世界的机构共同合作
- 仿真的数据能否用来深度学习_数字孪生弥合了深度学习的数据鸿沟
- 人机交互界面设计大作业_为什么说大多数UI设计、大数据、人工智能等培训班不靠谱?...
- 用汇编的眼光看C++(之算术符重载陷阱)
- 句句真研—每日长难句打卡Day14
- 移动端开发—流式布局
- linux mysql5.5.50_linux下安装mysql5.5
- java 符号引用与直接引用
- slf4j log4j logback关系详解和相关用法
- Atitit dsl对于数组的处理以及main函数的参数赋值
- matlab安装前有兼容性问题,matlab安装及问题解决
- 小飞鱼通达二开 通达OA2017集成MongoDB(图文)
- 5.1数学建模与MATLAB--层次分析法(评价类问题)
- git pull 报错:Exiting because of unfinished merge.
- 《数据驱动 | 装备制造创新集群智慧化转型》
- 现代诗与古典传统的关系
- 为什么是三次握手和四次挥手
- PySOT测试报错:AssertionError: /pysot/experiments/siamrpn_r50_l234_dwxcorr/Basketball/img/0001.jpg
- Node* create()的含义
热门文章
- 记住鲁迅的所有文章,因为他具有深远的意义,在当下意义重大。
- Poi HSSFCellStyle.ALIGN_CENTER VERTICAL_CENTER 等爆红的解决办法
- PDF页码怎么设置?如何给PDF文件设置页码
- linux sftp put 文件夹,使用sftp命令上传文件夹方法
- Python脚本实现淘宝秒杀
- java char取值范围是_Java 基本数据类型取值范围讲解
- PhotoShop 之移动选区
- 《Real-Time Rendering 4th Edition》全文翻译 - 第5章 着色基础(下)5.5 ~ 5.6
- logstash grok mysql_日志分析logstash插件-grok详解
- C++ 多线程(一)入门