iOS 类别中使用属性

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

```

#import@interface Person : NSObject

@property (nonatomic, copy) NSString *name;

@end

#import "Person.h"

@implementation Person

@end

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

#import "Person.h"@interface Person (addproty)@property(nonatomic, copy)NSString *addr;@end#import "Person+addproty.h"#import@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

```

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容