IOS OC 类别category浅析
2015-11-10 10:20
405 查看
类别的概念:
类别是为一种为现有类添加新方法的方式。
利用object-c的运行时分配机制,可以为现有类添加新的方法,这种为现有类添加新方法的形式,叫做分类(category)
类别的作用:
可以在不同的文件中一个类进行实现
类别的定义与实现方式:
@interface NSString(NumberConvenience) //定义
-(NSNumber *)lengthAsNumber;
@end
@implementation NSString(NumberConvenience) //实现
-(NSNumber *)lengthAsNumber
{
unsigned int length = [self length];
return ([NSNumber numberWithUnsignedInt : length]);
} //lengthAsNumber
@end
类别的特点:
1、为已有类添加新的方法
2、重写已有类中的方法
3、不能添加为已有类添加成员变量 (可以通过runtime机制解决)
4、类别和继承不能同时实现
通过分类 间接为已有类添加分类:
定义:
@interface UIView(AddVariables)
@property (nonatomic, retain) NSString *viewName;
@end
实现:
// 定义存取的Key
static const char *viewNameKey = "viewNameKey";
@implementation UIView(AddVariables)
// get方法
- (NSString *)viewName {
return (NSString *)objc_getAssociatedObject(self, viewNameKey);
}
// set方法
- (void)setViewName:(NSString *)newViewNameKey {
objc_setAssociatedObject(self, viewNameKey, newViewNameKey, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
@end
类别是为一种为现有类添加新方法的方式。
利用object-c的运行时分配机制,可以为现有类添加新的方法,这种为现有类添加新方法的形式,叫做分类(category)
类别的作用:
可以在不同的文件中一个类进行实现
类别的定义与实现方式:
@interface NSString(NumberConvenience) //定义
-(NSNumber *)lengthAsNumber;
@end
@implementation NSString(NumberConvenience) //实现
-(NSNumber *)lengthAsNumber
{
unsigned int length = [self length];
return ([NSNumber numberWithUnsignedInt : length]);
} //lengthAsNumber
@end
类别的特点:
1、为已有类添加新的方法
2、重写已有类中的方法
3、不能添加为已有类添加成员变量 (可以通过runtime机制解决)
4、类别和继承不能同时实现
通过分类 间接为已有类添加分类:
定义:
@interface UIView(AddVariables)
@property (nonatomic, retain) NSString *viewName;
@end
实现:
// 定义存取的Key
static const char *viewNameKey = "viewNameKey";
@implementation UIView(AddVariables)
// get方法
- (NSString *)viewName {
return (NSString *)objc_getAssociatedObject(self, viewNameKey);
}
// set方法
- (void)setViewName:(NSString *)newViewNameKey {
objc_setAssociatedObject(self, viewNameKey, newViewNameKey, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
@end
相关文章推荐
- iOS coding多人协作开发工具
- 在Xcode中安装Alcatraz管理插件工具
- iOS9 开发中遇到的一些问题
- iOS每日小结-01续二
- ARM汇编逆向iOS 实战
- ios(3)-Block
- 转:iOS9的新特性以及适配方案
- iOS 获取手机的型号,系统版本,软件名称,软件版本
- 使用ARM汇编破解iOS程序基础知识分享
- iOS -实例变量
- IOS 实现录音PCM转MP3格式(边录音边转码)
- iOS之渐变虚化背景图片
- iOS之CocoaPods使用步骤
- iOS学习笔记 自定义cell并且文本自适应高度
- iOS-autolayout 学习
- iOS开发中文件的上传和下载功能的基本实现
- iOS_Runtime_OC对象在堆内存中开辟内存的大小
- iOS完整学习路线图
- iOS --弹框1
- 小技巧3-iOS 获取当前系统时间