iOS Runtime 动态添加属性不能添加intrinsic类型

Posted Xiejunyi12

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS Runtime 动态添加属性不能添加intrinsic类型相关的知识,希望对你有一定的参考价值。

- (void)setIsThreeDimensionalMap:(BOOL)isThreeDimensionalMap
    objc_setAssociatedObject(self, @"isThreeDimensionalMap", isThreeDimensionalMap, OBJC_ASSOCIATION_COPY_NONATOMIC);

报错:
- Implicit conversion of ‘BOOL’ (aka ‘bool’) to ‘id’ is disallowed with ARC

就是不能动态添加本身的类型,只能添加对象

于是我把对象包装到NSNumber中去

[NSNumber numberWithBool:YES]; 

添加一个NSNumber 对象…

- (void)setIsThreeDimensionalMap:(NSNumber *)isThreeDimensionalMap
    objc_setAssociatedObject(self, @"isThreeDimensionalMap", isThreeDimensionalMap, OBJC_ASSOCIATION_COPY_NONATOMIC);

就不报错了!

以上是关于iOS Runtime 动态添加属性不能添加intrinsic类型的主要内容,如果未能解决你的问题,请参考以下文章

iOS runtime实战应用:关联对象

ios动态添加属性的几种方法

iOS动态性:动态添加属性的方法——关联(e.g. 向Category添加属性)

Runtime 实现 动态添加属性

iOS 开发小记

通过runtime对类别进行属性的扩展