Cocoa Fundamentals Guide-Category
来源:互联网 发布:泰捷网络机顶盒哪款好 编辑:程序博客网 时间:2024/06/05 19:43
专业词汇就不翻译了,翻译了看起来反而别扭。
Category
Category可以让你不通过继承就增加一个类的方法。在Category中定义的方法会成为这个类的一部分(只限于你的程序范围内)。更cool的是所有的子类也可以使用这些在Category中定义的方法。当程序运行的时候,通过Category添加的方法和在类中定义的方法没有任何区别。你可以向类的任何实例(包括子类的实例)发送消息调用在Category中定义的方法。
Category不仅是增加类行为的一种方便的途径,你也可以通过Category把对象的方法按功能或者按数据进行分类,将有关联的方法整理到一个Category中。Category能特别方便的管理很大的类。比如有多个开发人员共同开发一个类,你甚至可以把不同的Category放在不同的文件中,(是想说多个开发人员通过不同category共同扩展一个类么?那怎么调用呢?)
声明和实现Category在语法上和继承几乎一样。在语法上,他们就只在名字上有区别,定义Category需要在@interface和@implements后面的名字外面加上小括号。(真绕啊这句话,看例子一下就明白了,)比如你想给NSString加个方法以树状的方式显示集合对象的描述信息。这个Category的头文件定义如下(终于代码了):
#import <Foundation/NSArray.h> // if Foundation not already imported @interface NSArray (PrettyPrintElements)- (NSString *)prettyPrintDescription;@end
相应的.m文件如下
#import "PrettyPrintCategory.h" @implementation NSArray (PrettyPrintElements)- (NSString *)prettyPrintDescription { // implementation code here...}@end对于Category,这有一些限制。你不能通过Category给一个类添加变量。虽然通过Category可以复写类中已经有的方法,但我们不建议你这么做,特别是你想增加这个方法的行为。 原因是因为category中的方法是类接口的一部分,如果你覆写了类中的一个方法,你就没有办法调用父类中定义的这个方法。(真绕,是想说,如果我在category覆写方法A,我就不能用[super A],因为这个时候[super A]实际上是调用你在Category中覆写的A。。。要试验下)如果你确实需要修改一个已有的方法,那你最好还是通过子类来实现吧。
你可以通过Category给根类NSObject添加新的方法。在你的代码中,所有的实例和对象都可以使用这个新增的方法。Informal protocols-Cocoa代理机制的基本类型-就是在NSOject上通过Category声明的。通过NSObject上的Category添加到每个对象的方法可能造成不可预制的结果,导致系统崩溃,数据损坏,甚至更糟,所以慎用。
- Cocoa Fundamentals Guide-Category
- Cocoa Fundamentals Category 的例子--更好用的URL encoding方法
- DB2 9 Fundamentals Certification Study Guide
- [Read note] Android Dev Guide -> Application Fundamentals
- Data Warehousing Fundamentals : A Comprehensive Guide for IT Professionals
- Data Modeling Fundamentals: A Practical Guide for IT Professionals
- OCA Oracle Database 11g: SQL Fundamentals I Exam Guide
- 【Android Dev Guide - 02】 - Application Fundamentals 应用基础
- Android Dev Guide—— Application Fundamentals(中文版)
- (API GUIDE 2)APP FUNDAMENTALS(应用基础)
- 64-Bit transition Guide for Cocoa Touch
- 64-Bit Transition Guide for Cocoa Touch
- Introduction to Stream Programming Guide for Cocoa
- String Programming Guide for Cocoa--字符串编程指南
- 《64-Bit transition Guide for Cocoa Touch》中文PDF版
- 《现代 JavaScript 》(Learning JavaScript A Hands-On Guide to the Fundamentals of Modern JavaScript)
- 安卓官方开发文档API GUIDE(1.1)Application Fundamentals 应用基础
- Oracle Database 12c SQL Fundamentals I Exam Guide Exam 1Z0-061 学习笔记
- MTK开发快速诊断手册_09B
- MTK每日总结2
- ADO.NET 事务处理的定义
- 入门篇:Ubuntu用apache做web服务器
- MTK每日总结1
- Cocoa Fundamentals Guide-Category
- MTK的GUI 设计
- 利用Minidx Extract-Text Com组件从Word,Xls,Pdf……等文件中读取 后附C# 调用代码
- 飞鸽传书官方网站方式hook一些常见的枚举文件
- ORACLE 解锁表
- PHP中error_reporting()函数的用法
- CCS4.0下载地址共享以及破解文件
- DB Query Analyzer 中断SQL语句的执行
- 浅谈需求控制