打个比方 NSString *str = [[NSData alloc]init];
这里面当编译状态的时候 是属于NSString类型 运行状态的时候属于NSData类型 ,这就是运行时runtime机制,
可能编译的时候 A指向B 运行的时候A会指向C 值会改变的。
一般category里面 属性不能扩展的 只能使用
objc_getAssociatedObject
和objc_setAssociatedObject
方法进行属性修改。objc_allocateClassPair
objc_allocateClassPair(<#__unsafe_unretained Class superclass#>, <#const char *name#>, <#size_t extraBytes#>)
objc_allocateClassPair(<#__unsafe_unretained Class superclass#>, <#const char *name#>, <#size_t extraBytes#>)