objective-c类别(Category)详细解说
来源:互联网 发布:sql横向合并 编辑:程序博客网 时间:2024/05/21 17:12
objective-c类别(Category):为一个已经存在的类增加方法,而不是增加一个子类。
先上代码:
NSStringUtilities.h
//#import <Cocoa/Cocoa.h>#import <Foundation/Foundation.h>@interface NSString (Utilities)-(BOOL)isURL;@end
#import "NSStringUtilities.h"@implementation NSString (Utilities)-(BOOL)isURL{if ([self hasPrefix:@"http://"]) {return YES;}else {return NO;}}@end
UseCategories.m
#import <Foundation/Foundation.h>int main (int argc, const char * argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; NSString *string1 = @"http://www.xinlaoshi.com/";NSString *string2 = @"Pixar";if ([string1 isURL]) {NSLog(@"string1 is a URL");}else {NSLog(@"string1 is not a URL");}if ([string2 isURL]) {NSLog(@"string2 is a URL");} else {NSLog(@"string2 is not a URL");} [pool drain]; return 0;}
这个例子是给NSString这个类添加一个判断一个字符串是否是一个链接的方法。
以上例子可以总结出其格式是:
#import "类名.h"
@interface 类名(类别名)
//新方法的声明
@end
#import "类名类别名.h"
@implementation 类别(类别名)
//新方法的实现
@end
下面是我从别的地方看的,链接是:http://www.cocoachina.com/bbs/read.php?tid=83441&page=1
这篇博文太长了,下面是我认为比较重要的几点:
类别的局限性
有两方面局限性:
(1)无法向类中添加新的实例变量,类别没有位置容纳实例变量。
(2)名称冲突,即当类别中的方法与原始类方法名称冲突时,类别具有更高的优先级。类别方法将完全取代初始方法从而无法再使用初始方法。
无法添加实例变量的局限可以使用字典对象解决
4、类别的作用
类别主要有3个作用:
(1)将类的实现分散到多个不同文件或多个不同框架中。
(2)创建对私有方法的前向引用。
(3)向对象添加非正式协议。
- objective-c类别(Category)详细解说
- Objective-c Category(类别)
- Category 类别 -Objective-C
- Category 类别 -Objective-C
- Category 类别 -Objective-C
- Category 类别 -Objective-C
- Category 类别 -Objective-C
- Objective-C中的类别(Category)
- Objective-C 类别(Category)浅谈
- Objective-C 类别(Category)浅谈
- Objective-C类别(Category),分类
- Objective-C 12 类别Category
- 【Objective-C基础】类别Category
- Objective-C category (类别) 和 protocol (协议)
- Objective-C中的类别(Category)的使用
- objective-c中Category类别(扩展类)
- objective-c中Category类别(扩展类)专题总结
- objective-c中Category类别(扩展类)专题总结
- left join on、where后面的条件的区别
- android中线程进程模型
- 一个游戏程序员的资料
- 将matlab矩阵输出到excel表格中
- linux 进程地址空间的一步步探究
- objective-c类别(Category)详细解说
- Rokon游戏引擎第二讲
- ALV标准导出EXCEL 2010功能无数据
- 对网关、路由、DNS、ARP、ARP欺骗的经典比喻
- 每日学习
- java泛型中的上界下界(上限下限)
- I/O
- Rokon游戏引擎第三讲
- 一条BUG的反思