iOS类扩展-添加变量

来源:互联网 发布:wps数据透视图 编辑:程序博客网 时间:2024/05/02 01:40

iOS类范畴可以为我们不知道源码或已有的类添加方法,但是无法为类添加实例变量,为了实现添加变量的目的,我们使用关联引用为分类添加数据,如下我们有个person类,但是我们没有它的源码,只有.h文件如下:

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

我们需要为它添加一个变量email,因为我们需要在程序中也能使用它的email地址,那么实现如下:

#import "Person.h"@interface Person (EmailAddress)@property(nonatomic,readwrite,copy)NSString *emailAddress;@end

#import "Person+EmailAddress.h"#import <objc/runtime.h>@implementation Person (EmailAddress)static char emailAddressKey;-(NSString *)emailAddress{    return objc_getAssociatedObject(self, &emailAddressKey);}-(void)setEmailAddress:(NSString *)emailAddress{    objc_setAssociatedObject(self, &emailAddressKey, emailAddress, OBJC_ASSOCIATION_COPY);}@end

测试:

  Person *person = [[Person alloc] init];    person.name = @"hah";    person.emailAddress = @"www.baidu.com";        NSLog(@"name : %@  email : %@",person.name,person.emailAddress);

结果:

name : hah  email : www.baidu.com

试试吧!


原创粉丝点击