坚持 成长 每日一篇
类别和分类的区别
类别和分类是极其相似的,都是给为类添加拓展,我们可以简单区分为没有名字的类别(Category)是分类
1.我们可以给分类添加属性,不能给类别添加属性。
2.类别有实现部分,分类没有实现部分。
分类的定义:
@interface ClassName ()
@property(nonatomic,readwrite,copy) NSString *name;
@end
类别的定义和实现:
@interface Person (other)
@end
@implementation Person (other)
@end
如何利用关联对象给分类添加属性
关联对象的使用可以查看:http://blog.youkuaiyun.com/u014410695/article/details/48463773
Person+other.h文件
#import "Person.h"
@interface Person (other)
@property(nonatomic,readwrite,copy) NSString *name;
@end
Person+other.m文件
#import "Person+other.h"
#import <objc/runtime.h>
static void *strKey = &strKey;
@implementation Person (other)
-(void)setName:(NSString *)name
{
objc_setAssociatedObject(self, &strKey , name, OBJC_ASSOCIATION_COPY);
}
-(NSString*)name
{
return objc_getAssociatedObject(self, &strKey);
}
@end