美文网首页
2020-03-09

2020-03-09

作者: Im_Free | 来源:发表于2020-03-17 14:10 被阅读0次

分类:

Category
Category 是表示一个指向分类的结构体的指针,其定义如下:
typedef struct objc_category *Category;
struct objc_category {
  char *category_name                          OBJC2_UNAVAILABLE; // 分类名
  char *class_name                             OBJC2_UNAVAILABLE; // 分类所属的类名
  struct objc_method_list *instance_methods    OBJC2_UNAVAILABLE; // 实例方法列表
  struct objc_method_list *class_methods       OBJC2_UNAVAILABLE; // 类方法列表
  struct objc_protocol_list *protocols         OBJC2_UNAVAILABLE; // 分类所实现的协议列表
}
  • 运行时添加类方法列表、实例方法列表、实现协议列表,没有属性列表,使用@property添加的属性,编译期间不会报错,但是不会创建成员变量
  • runtime通过objc_setAssociatedObject/objc_getAssociatedObject方法关联在hash表中,但并没有创建成员变量
  • 如果分类方法和原类同名,因为分类是运行时被添加到类中的,倒叙遍历查找方法名时,会优先调用分类方法,忽略原类方法。

扩展:

添加私有属性,

@interface XXX ()
//编译时期添加**私有**属性、方法
//私有方法(如果不实现,编译时会报警,Method definition for 'XXX' not found)
@end

KVO

KVC

  • KVC设值顺序
    -setKey > _key >_isKey > key > isKey
    如果accessInstanceVariablesDirectly方法返回NO,只会访问setKey。
  • KVC设值
    getKey>key>isKey>Array的方法(countofKey)>NSSet方法
    如果accessInstanceVariablesDirectly方法返回YES,会直接访问_key>_isKey>key>isKey
  • 集合的处理
    当对容器类使用KVC时,valueForKey:将会被传递给容器中的每一个对象,返回一个集合
  • 用途
    动态取值
    访问私有变量
    字典 模型转换 结合runtime

https://www.jianshu.com/p/b9f020a8b4c9

相关文章

  • 孤独美丽到残酷!满月让我们伤感极致!-H&H 72

    2020-03-09 也许是full moon影响,情绪异常低落,学生昨晚也是很low,我强装high,其实巴不得...

  • clion中debug不生效

    作者时间雨中星辰2020-03-09 问题描述 clion用着好好的,突然就不能debug了。 问题截图 问题原因...

  • "自我意识"定义了人与动物的区别 - 草稿

    "自我意识"定义了人与动物的区别 朗田心灵 2020-03-09 订阅 作者 | 徐敬东 记录:吴琪笙 | 编辑:...

  • 应对问句

    中原焦点团队 高艳峰 信阳 网络中级九期 坚持分享第705天 2020-03-09 面对当事人心情低落时仍...

  • 专业形象管理师教你整理形象:如何找到适合自己的搭配用色

    专业形象管理师教你整理形象:如何找到适合自己的搭配用色 整理控2020-03-09 09:11:04 整理控直播间...

  • 2020-03-09

    2020-03-09 星期一 一、亿万富翁制造机分享 早上起床照镜子,看着自己的眼睛:美女,早上好!我爱你。吻! ...

  • 让生命力得以绽放

    2020-03-09 Day3《对财富说是》 之前,一直写的类似读书笔记的观后感,自己也总在强调正念。今天,我想把...

  • 平淡

    2020-03-09 己卯月辛亥日 今天宜家复工开业了,中午和女儿去逛商场,进门时两次量体温、扫码签到,餐厅都没有...

  • 很多时候 我忘了我是一个生命

    2020-03-09 滋养生命 我非常喜欢今天要讨论的话题,滋养生命。因为有很多时候,我会忘了自己是一个生命,是需...

  • 我失去了一个爱我的人

    2020-03-09 航行了这么久 我想也该送送你了 你总质问我为什么不给你写诗 现在我要写了 一首很长很长很长 ...

网友评论

      本文标题:2020-03-09

      本文链接:https://www.haomeiwen.com/subject/slapdhtx.html