objective-c category类别的使用
来源:互联网 发布:淘宝sku图片大小多少 编辑:程序博客网 时间:2024/05/14 20:48
类别是一种为现有的类添加新方法的方式。
- (NSNumber *)lengthAsNumber;
@end
(1)为NSString类添加一个名称为NumberConveniencede的类别;类别名称具有唯一性,你可以向一个类中添加任意多的类别。
(2)可以指定希望向其添加类别的类(NSString),以及类别的名称(NumberConvenience),而且你还可以列出添加的方法,最后以@end结束;类别声明部分不能有实例变量部分。
@implementation NSString (NumberConvenience)
- (NSNmuber *)lengthAsNumber{
unsigned int length = [self length];//获得字符串长度
return ([NSNumber numberWithUnsignedInt :length]);
}
//类别的作用:
//(1)将类别实现分散到多个不同文件或多个不同框架中
//(2)创建私有方法的前向引用
//(3)向对象添加非正式协议
//类别的局限性:
//(1)无法添加新的实例变量
//(2)名称冲突,如果类别和现有的方法重名,类别具有更高的优先级,解决办法,类别方法名中添加一个前缀
什么时候使用类别?
(1)类别只能添加新方法,无法添加新的实例变量(2)如果类别名和原来类中的方法产生名称冲突,则类别将覆盖原来的方法,因为类别具有更高的优先级。
要注意的是Objective-c只支持单继承,如果要实现多继承的话,可以通过类别和协议的方式来实现。
另外要特别注意的是,类别不能像继承时那样给类别接口增加新的实例变量,而是要扩展一个类的行为。
类别的名称是任意的。
- (NSNumber *)lengthAsNumber;
@end
(1)为NSString类添加一个名称为NumberConveniencede的类别;类别名称具有唯一性,你可以向一个类中添加任意多的类别。
(2)可以指定希望向其添加类别的类(NSString),以及类别的名称(NumberConvenience),而且你还可以列出添加的方法,最后以@end结束;类别声明部分不能有实例变量部分。
@implementation NSString (NumberConvenience)
- (NSNmuber *)lengthAsNumber{
unsigned int length = [self length];//获得字符串长度
return ([NSNumber numberWithUnsignedInt :length]);
}
@end
自己在xcode 4.3.2中可以直接基于新建类别,新建之后没有#import category.h文件编译会显示有警告,但是运行还是可以的。现在质疑的是有没有import的是不是只是一个警告的区别的?
- 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类别(Category),分类
- Objective-C 12 类别Category
- 【Objective-C基础】类别Category
- 【Objective-C】有关于类别category的总结
- objective-c中对类别category的理解
- objective-c类别(Category)详细解说
- Objective-C Category类别 初体验
- dell vostro3400 无线网卡在linux下不识别解决方法
- struts1里面的时间格式问题
- WordPress 你没有权限
- js 中如何获取制定的cook信息。
- python and or技巧
- objective-c category类别的使用
- http://linux.linuxidc.com/
- ArcGIS 10.1实现洪水淹没模拟演示
- 验证IP
- MySQL 架构 - MySQL 存储引擎 -InnoDB
- .NET 性能优化方法总结
- 数字转为中文数字,数字四舍五入,字符串转大写,字符串转Map--封装类
- node.js入门 - 11.api:DNS和加密
- Oracle获取系统的时间和日期