OC基础回想(十一)类别
只是有时候子类不方便。比方,想为NSString类加入一个新的行为,可是NSString实际上仅仅是一个类簇的表面形式,因而为这种类创建子类会很困难。
1.创建类别
1.1開始创建
1.2 @interface部分
@interface NSString (NumberConvenience)
-(NSNumber *)lengthAsNumber;
@end//NumberConvenience
1.3 @implementation 部分
@implementation NSString (NumberConvenience)
-(NSNumber *)lengthAsNumber
{
NSUIngeter length = [self length];
return ([NSNumber numberWithUnsignedInt:length]);
}//lengthAsNumber
@end // NumberConverience
1.4 类别的缺陷
比如,使用全局字典来存储对象和你想要关联的额外变量之间的映射。
但此时须要认真考虑一下,类别是否是完毕当前任务的最佳选择。
1.5 类别的优势
1.6 类扩展
@interface MyClass:NSObject
@property (retain, readonly) float value;
@end
@interface MyClass()
@property (retain, readwrite) float value;
@end
2. 通过类别创建前向引用
3.非正式协议和托付类别
3.1 托付
3.2 托付和类别
这也意味着。仅仅要一个类加入了这个NSObject类别的头文件。这个对象就成为了一个托付对象。能够调用类别中声明的方法。
3.3 响应选择器
假设该托付对象响应给定的消息,则向该托付对象发送该消息。否则将临时忽略该托付对象。继续正常执行。
3.4 响应器的其它应用
OC基础回想(十一)类别的更多相关文章
- OC基础回想(十二)协议
在OC基础(十一)中我们讨论了类别和非正式协议的奇异之处.在使用非正式协议时.能够仅仅实现你想要获得响应的方法.也不必在对象中声明不论什么内容来表示该对象可用作托付对象. 全部这些任务能够用最少的代码 ...
- Bootstrap <基础三十一>插件概览
在前面布局组件中所讨论到的组件仅仅是个开始.Bootstrap 自带 12 种 jQuery 插件,扩展了功能,可以给站点添加更多的互动.即使不是一名高级的 JavaScript 开发人员,也可以着手 ...
- Bootstrap <基础二十一>徽章(Badges)
Bootstrap 徽章(Badges).徽章与标签相似,主要的区别在于徽章的边角更加圆滑. 徽章(Badges)主要用于突出显示新的或未读的项.如需使用徽章,只需要把 <span class= ...
- 【OC基础语法考试】
OC基础语法已经全部学完,但是这些知识只是最基础的,还有很多高级知识,这个可能需要后面慢慢的去学习才能体会到.接下来我会总结前面的OC基础语法,如果大家发现有什么不正确的地方,请指正,小弟是新生,多请 ...
- iOS 阶段学习第11天笔记(OC基础知识)
iOS学习(OC语言)知识点整理 一.OC基础知识 1)#import 用于导入头文件,预处理阶段加载引用,只加载一次. 2)OC 依赖于Foundation框架下的头文件Foundation.h, ...
- OC基础笔记目录
OC基础(1) Objective-C简介 OC和C对比 第一个OC程序 面向对象思想 OC基础(2) 类与对象 类的设计 第一个OC类 对象方法的声明和实现 类方法的声明和实现 OC基础(3) 对象 ...
- OC基础 文件管理
OC基础 文件管理 1.文件管理类NSFileManager对象的创建: NSFileManager *fm = [NSFileManager defaultManager]; 2.文件操作: (1 ...
- OC基础 NSDate
OC基础 NSDate #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @auto ...
- OC基础 NSData
OC基础 NSData 1.NSString转NSData //NSString转NSData NSString *string = @"abcd12345"; NSData *d ...
随机推荐
- crontab的使用
基本格式 : * * * * * command 分 时 日 月 周 命令 第1列表示分钟1-59 每分钟用*或者 */1表示 第2列表示小时1-23(0表示0点) 第3列表示日期1-31 第4列表示 ...
- Java中 == 和 equals()
记住三句话 1. 语义上:==指的是内存引用一样.equals是指的是逻辑相等.逻辑相等具体的意思由编写者决定(即在引用类型中,"=="是比较两个引用是否指向堆内存里的同一个地址( ...
- FullCalendar日程设置
顺序很重要!!!不然会报错,后面的文件会引用前面的一些东西. shili1: http://blog.csdn.net/lizai22/article/details/53522523 shili ...
- 《Java编程的逻辑》第一部分 编程基础与二进制
- IE9的F12工具,"网络"页签,点击"开始捕获"之后,请求显示的状态是"挂起"的分析和解决
最近一个项目,客户端使用用jQuery编写ajax请求,服务端采用struts2框架.js发送请求和action处理请求过程中,遇到一个问题.刚开始觉得问题很诡异,仔细定位很久之后才发现问题,虽然问题 ...
- CSS (层叠样式表)
层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言.CSS不仅可以静态 ...
- 码书:编码与解码的战争 PDF 下载
码书:编码与解码的战争 PDF 下载 下载地址:https://pan.baidu.com/s/14Y_krHh-unOv4g2KYFFDgQ 如需分享码:[打开微信]->[扫描右侧二维码]-& ...
- redis在linux下安装以及扩展
安装过redis后发现回头忘了,今天重新安装记录下 首先 我是在home下创建redis文件 mkdir redis 然后直接用wget安装 wget http://download.redis ...
- php第十五节课
租房表 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3. ...
- VsCode 格式化插件配置
Beautify 1.在工作目录下建立.jsbeautifyrc文件: { "brace_style": "none,preserve-inline", &qu ...