Objective-C如何在category里加入成员变量

本文介绍了如何在Objective-C的category中添加成员变量,通过利用runtime库的objc_setAssociatedObject和objc_getAssociatedObject函数,实现对象间的关联。由于category本身不支持添加成员变量,但extension可以,但要求在原始类的实现中实现extension的方法,这在无法修改源码的情况下不适用。文章提供了一个简单示例,强调使用@dynamic而非@synthesize来避免编译器自动生成setter/getter,并讨论了关联策略OBJC_ASSOCIATION_RETAIN_NONATOMIC的使用。
摘要由CSDN通过智能技术生成

OC的category是一个非常好用的特性,它允许你在不改变源码的情况下扩展类的一些功能特性,从而能更好地组织你地代码。

但是使用category有一个很大地限制,不能在category里添加成员变量,

这个限制较大地限制了category的使用,当然使用extension可以往类里面添加成员变量,但是extension要求你需要在original class 的实现类里面实现extension所添加的方法。所以extension不可能对拿不到源码的框架进行扩展。

对于category不能添加成员变量的限制,下面我们介绍一个很巧妙的方法来解决:使用runtime库的 objc_setAssociatedObject / objc_getAssociatedObject 函数来解决。

objc_setAssociatedObject 的定义:


objc_getAssociatedObject 的定义:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值