您的位置:首页 > 移动开发 > IOS开发

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: