runtime - iOS 中 分类关联实例属性的写法有点疑问?

查看:123
本文介绍了runtime - iOS 中 分类关联实例属性的写法有点疑问?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

- (NSString *)associatedObject_copy {
    return objc_getAssociatedObject(self, _cmd);
}

- (void)setAssociatedObject_copy:(NSString *)associatedObject_copy {
    objc_setAssociatedObject(self, @selector(associatedObject_copy), associatedObject_copy, OBJC_ASSOCIATION_COPY_NONATOMIC);
}

上面这段代码中, _cmdself 类似,只不过前者表示的是当前的SEL
第二个方法的第二个参数为什么不也用_cmd呢?我理解的 _cmd@selector(当前方法)不是一个意思吗?
为什么第一个方法的第二个参数用_cmd,第二个方法的第二个参数却用@selector(xxx)了啊?
希望能告知一二.....

啰嗦这么多:

其实我的问题主要是 在同一个方法里面,_cmd@selector(当前方法) 完全一样嘛?不一样,有什么区别?

解决方案

因为绑定同一个属性setter和getter肯定用的是同一个key,但是用_cmd只能获取当前的方法名,所以你在set方法里面肯定要或获取跟上面相同的key, _cmd也是SEL类型的参数和@selector(xxx)一样

这篇关于runtime - iOS 中 分类关联实例属性的写法有点疑问?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆