首页 > 代码库 > iOS 类别中使用属性

iOS 类别中使用属性

iOS扩展属性:category可以扩展类的方法,但是不能扩张类的属性。如果要扩展类的属性,可以用associative,这个相对于category来说用的比较少,而且他还用到运行时编程,必须使用<obj/runtime.h>,使用objc_getAssociatedObject,objc_setAssociatedObject以及objc_removeAssociatedObjects.这几个方法的生命如下:

示例代码如下:

1、先创建一个person类

#import <Foundation/Foundation.h>@interface Person : NSObject@property (nonatomic, copy) NSString *name;@end#import "Person.h"@implementation Person@end

2、新建一个分类,运用associative添加属性

#import "Person.h"@interface Person (addproty)@property(nonatomic, copy)NSString *addr;@end#import "Person+addproty.h"#import <objc/runtime.h>@implementation Person (addproty)static char strAddrKey = ‘a‘;- (NSString *)addr{    return objc_getAssociatedObject(self, &strAddrKey);}- (void)setAddr:(NSString *)addr{    objc_setAssociatedObject(self, &strAddrKey, addr, OBJC_ASSOCIATION_COPY_NONATOMIC);}@end

iOS 类别中使用属性