Runtime 为分类增加成员变量

//
//  BMKPoiSearch+networkID.h
//
//  Created by pilgrim on 15/10/16.
//  Copyright © 2015年 tomtom. All rights reserved.
//

#import <BaiduMapAPI/BMKPoiSearch.h>

@interface BMKPoiSearch (networkID)

@property (nonatomic, strong) id networkID;
@end
<pre name="code" class="objc">//
//  BMKPoiSearch+networkID.m
//
//  Created by pilgrim on 15/10/16.
//  Copyright © 2015年 tomtom. All rights reserved.
//

#import "BMKPoiSearch+networkID.h"
#import <objc/runtime.h>

static const void * externVariableKey =&externVariableKey;

@implementation BMKPoiSearch (networkID)

@dynamic networkID;
- (id)networkID
{
    return objc_getAssociatedObject(self, externVariableKey);
}
- (void)setNetworkID:(id)networkID
{
    objc_setAssociatedObject(self, externVariableKey, networkID, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}

@end

 
 
问题描述:百度地图的SDK,将.m实现文件封装成静态库,只暴露了头文件中的API接口。如果想向某一个类中增加一个成员变量,因为.m文件不可见,用Extention是不能实现的。而Category只能增加方法,不能增加成员变量。
解决方案:可以用运行时解决Category不能增加成员变量的问题。解决方法如上。

你可能感兴趣的:(Runtime,为分类增加成员变量)