码迷,mamicode.com
首页 > 其他好文 > 详细

objective-c中的类别

时间:2016-08-11 17:42:02      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:

类别的主要作用是扩展功能,也就是添加新的方法,不能对属性进行封装。

如果要添加属性,可以使用关联对象辅助实现

#import "Test.h"

@interface Test (Other)
@property (nonatomic,strong)NSString *myStr;
@end

 

#import "Test+Other.h"
#import <objc/runtime.h>
@implementation Test (Other)
static const char *omyStr = "omyStr";


-(void)setMyStr:(NSString *)myStr{
     objc_setAssociatedObject(self, omyStr, myStr, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}

-(NSString*)myStr{
    return objc_getAssociatedObject(self, omyStr);;
}
@end

 

需要注意的是设置方法中的内存管理语义:

关联类型 等效的@property属性
OBJC_ASSOCIATION_ASSIGN assign
OBJC_ASSOCIATION_RETAIN_NONATOMIC nonatomic, retain
OBJC_ASSOCIATION_COPY_NONATOMIC nonatomic, copy
OBJC_ASSOCIATION_RETAIN retain
OBJC_ASSOCIATION_COPY copy

objective-c中的类别

标签:

原文地址:http://www.cnblogs.com/antlin/p/5761753.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!