黑马程序员IOS-OC语言-分类、协议
来源:互联网 发布:apache index.html 编辑:程序博客网 时间:2024/05/29 05:56
——- android培训、java培训、期待与您交流! ———-
分类(Category)
分类 : 在不改变原来模型(类内容)的前提下,扩充类的方法
扩充类的方法有两种:继承、分类(Category)
习惯将声明文件和实现文件名称统一采用”原类名+Category名称.m/.h”的方式命名
如 : NSString 的分类可以命名为 NSString+Tools.h
分类格式
// 分类的声明@interface 类名(分类名称) // 方法声明@end// 分类的实现@interface 类名(分类名称) // 方法实现@end
注意:
Category 可以访问原始类的成员变量,但不能添加成员变量,只能添加方法。
Category 可以实现原始类的方法,但是会替换原来的方法,要重载最后是创建子类。优先调用分类同名中的方法
方法调用的优先级: 分类(最后编译的父类优先) –> 本身类 –> 父类
多个 Category 中如果实现了相同的方法,只有最后一个参与编译的才有效(最终覆盖)
分类中定义的类方法,调用时使用被分类的类名即为原类 Person 分类 Person+Xxx 中定义的类方法yyyZzz调用该类方法用 [Person yyyZzz] 即可
protocol (协议)
协议 : 在 .h 文件中有声明方法,类遵守协议后可以调用里面的方法,自己重写这些方法
声明类: @class 类名;声明协议(protocol): @protocol 协议名;确实要调用,需要在.m文件中#import 需要调用类(协议)的头文件(.h)
协议中方法声明的关键字
@required : 必需的,必须实现的方法,否则会后警告(默认)@optional : 可选的,不要求实现,不会有警告
类继承类 : 父类只能有一个 类名 : 父类名 @interface 类名 : 父类名类、协议实现协议时 : 实现协议可以同时有多个 类名(或者协议名) <需实现协议名>
类遵守协议
@interface 类名 : 父类名 <协议1,协议2,...> /**/@end
协议遵守协议
@protocol 协议名 <其他协议1,其他协议2,...> /**/@end
可以用 conformsToProtocol 判断某个类是否实现了某个协议:
[obj conformsToProtocol : @protocol(MyDelegate)];
定义指针变量时就限制该变量要保存的变量
类名<协议名称> *变量名; // 该变量可以存储的变量必须遵循<协议>
@property 中声明的成员变量限制要保持的变量
@property (nonatomic , strong) 类名<协议名称> *成员变量名;
——- android培训、java培训、期待与您交流! ———-
0 0
- 黑马程序员IOS-OC语言-分类、协议
- 黑马程序员 OC语言 - 6 block、协议
- 黑马程序员-OC语言协议Protocol
- 黑马程序员-OC语言基础:协议
- 黑马程序员——ios开发基础之OC中的分类、协议、延展和代理
- 黑马程序员--OC--分类
- 黑马程序员之ios学习总结——10 OC语言的构造方法和分类
- 黑马程序员IOS-OC语言-简介、基础
- 黑马程序员IOS-OC语言-面向对象
- 黑马程序员IOS-OC语言-构造方法
- 黑马程序员IOS-OC语言-Block
- 黑马程序员IOS-OC语言-Foundation-类
- 黑马程序员---OC基础---Block、分类Category、协议protocol
- 【黑马程序员-学习笔记】OC-协议与分类
- [黑马程序员][OC]协议
- 黑马程序员 -- OC语言 NSString使用 点语法 构造 分类
- 黑马程序员 - OC语言 - 【考点】分类(Category)使用注意事项
- 黑马程序员-IOS基础之OC分类(Category)
- stm8 16位定时器TIM1
- DeepLearning tutorial(7)深度学习框架Keras的使用-进阶
- 位图bitmap算法
- 数据结构:最小生成树(Prim算法)
- android Launcher3应用列表修改透明背景
- 黑马程序员IOS-OC语言-分类、协议
- jquery中的innerHTML和value函数获取textarea内容
- C++ STL priority_queue<> 用法
- 图论- hdu5222 Exploration
- Android BroadcastReceiver的使用方法
- Tomcat的性能调校
- Spring核心学习(2)管理Bean的生命周期
- 关于JavaBean的运行
- clayui界面库收集 转自http://www.cppblog.com/clayui/