zoukankan      html  css  js  c++  java
  • 为什么 Category 不能增加成员变量-nonfragile

    三、既然是 non-fragile ivars,为什么 Category 不能增加成员变量?

        看过一些资料,理由并不是很让人信服。我觉得并不是做不到,只是现在没有做,现在不支持。我在 Optimizing App Startup Time Video 中找到答案,我觉得是因为 Category registration 是在 Non-fragile ivars offsets updated 之后进行的,所以无法支持增加成员变量,因为 offset 不会再去修复。大胆假设一下,如果 objective-c Category 要支持增加成员变量,只需要增加 ivar_t,加到 ivar_list_t 末尾,然后再修复一下 offset,就可以正常工作了。可能想简单了,不知道是否存在一些系统类已经被实例化了,不能在增加成员变量了。我理解只要这个类没有被实例化,就可以增加成员变量,成本问题。再去多想一点,我增加 var 和增加 method 是一样的,都是在 list 后面加一个 item,类的数据结构应该是 heap 的某个特殊区域,应该是 private,所以这个变化是进程之间相互隔离的
    ---------------------
    作者:海洋顶端
    来源:CSDN
    原文:https://blog.csdn.net/fly1183989782/article/details/81050782
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    八皇后 c++
    筛法求素数
    3月13号周练——2015 Multi-University Training Contest 9
    Mac搭建Git服务器—开启SSH
    push自定义动画
    学习:二维码、QR码、J4L-QRCode、java
    Java注解Annotation详解
    IOS 基于APNS消息推送原理与实现(JAVA后台)
    IOS学习笔记—苹果推送机制APNs
    linux yum命令详解
  • 原文地址:https://www.cnblogs.com/feng9exe/p/10277717.html
Copyright © 2011-2022 走看看