码迷,mamicode.com
首页 > 移动开发 > 详细

iOS 类别中使用属性

时间:2015-01-12 10:38:55      阅读:285      评论:0      收藏:0      [点我收藏+]

标签:

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 类别中使用属性

标签:

原文地址:http://www.cnblogs.com/wfwenchao/p/4217722.html

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