iOS运行时场合一 category中添加(连接)对象(fake机制)
来源:互联网 发布:淘宝客服是怎么做的 编辑:程序博客网 时间:2024/05/21 22:55
1.原生category是不能添加属性的,如果需要添加的话可以使用运行时连接一个变量(是连接而不是添加).
2.例子 比方说给uilabel 添加一个nsstring属性 叫做defaultText,这样我们一个label 就有有两个text可用了,这里单纯为了说明给category连接属性,至于实用性大家自行开发。
.h文件中声明一个字符串变量
#import <UIKit/UIKit.h>
@interface UILabel (custom)
@property(nonatomic,strong)NSString* defaultText;
@end
.m文件中连接一个指针指向这个字符串并重写set和get方法
#import "UILabel+custom.h"
#import <objc/runtime.h>
static constvoid* defaultTextKey = &defaultTextKey;
@implementation UILabel (custom)
@dynamic defaultText;
//get方法
-(NSString*)defaultText
{
returnobjc_getAssociatedObject(self,defaultTextKey);
}
//set方法
-(void)setDefaultText:(NSString *)defaultText
{
objc_setAssociatedObject(self,defaultTextKey, defaultText, OBJC_ASSOCIATION_RETAIN);
// [self setText:defaultText];
}
@end
这样在使用uilabel的时候就有两个属性可用了
个人理解:static const void* defaultTextKey = &defaultTextKey; 在程序数据段声明一个指针;
objc_setAssociatedObject(self, defaultTextKey, defaultText, OBJC_ASSOCIATION_RETAIN); //set方法将声明的变量与程序段的指针连接起来
objc_getAssociatedObject(self, defaultTextKey);//get方法是从程序段取出指针并访问对象(内容)。
- iOS运行时场合一 category中添加(连接)对象(fake机制)
- iOS运行时-使用Runtime向Category中添加属性以及运行时介绍
- iOS运行时初探-使用运行时机制向Category中添加属性
- iOS运行时初探-使用运行时机制向Category中添加属性
- iOS运行时应用场合二 获取对象属性
- iOS 运行时runtime应用之二--在category中使用运行时API给类添加属性
- iOS (Category)runtime动态添加属性
- Intent使用意图(一)添加Category
- IOS中扩展机制Category和associative
- iOS中为category添加@property支持
- iOS中OC给Category添加属性
- iOS 分类(category)
- IOS 运行时(runtime)机制
- iOS 用宏在category里给对象添加属性
- iOS 用宏在category里给对象添加属性
- 使用运行时机制向Category中添加属性
- 使用运行时机制向Category中添加属性
- Category添加属性(关联)
- 我自己----生命的意义
- leetcode:Substring with Concatenation of All Words
- 调试方法
- DOS命令
- 生产消费模式
- iOS运行时场合一 category中添加(连接)对象(fake机制)
- 使用open方式的文件锁
- javascript canvas 碰撞检测
- cvFitLine直线拟合函数的应用
- Android百分比布局使用小坑一个
- JS----拖拽图层,面向过程,面向对象
- Snail—iOS开发学习博客及网站
- 百度地图的封装
- git入门