类中增加实例变量

+++
Categories = ["iOS",]
Tags = ["iOS","runtime",]
date = "2014-06-23T18:34:54+08:00"
title = "类中增加实例变量"

+++

能否向编译后得到的类中增加实例变量?能否向运行时创建的类中增加实例变量?

  • 不能向编译后得到的类中增加实例变量
  • 能向运行时创建的类中添加实例变量

因为:

  • 编译后的类已经注册在 runtime 中,类结构体中的 objc_ivar_list 实例变量的链表和 instance_size 实例变量的内存大小已经确定,同时 runtime 会调用 class_setWeakIvarLayout 来处理 strong weak 引用。所以不能向存在的类中添加实例变量;
  • 运行时创建的类是可以添加实例变量,调用 class_addIvar 函数。但是得在调用 objc_allocateClassPair 之后,objc_registerClassPair 之前,原因同上。
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 对于从事 iOS 开发人员来说,所有的人都会答出【runtime 是运行时】什么情况下用runtime?大部分人能...
    梦夜繁星阅读 9,120评论 7 64
  • 说起我的减肥路,简直不堪回首,不忍入目。首先端正一个观点,我160,体重100多一点。我承认不是很胖,但是,我比之...
    七月月半阅读 2,885评论 0 0
  • sql注入工具:sqlmapDNS安全监测:DNSRecon暴力破解测试工具:patatorXSS漏洞利用工具:X...
    yutiansut阅读 11,976评论 2 12
  • 很多人在职场中感慨:为什么自己那么努力,却迟迟得不到升职加薪的机会? 我们不能用战术上的勤奋,掩盖战略上的懒惰。我...
    好听的暖阳阅读 3,207评论 0 2
  • 这个夏天我在海南白沙一个叫鹭湖的养生度假区疗养小住。我很喜欢这里的大山、湖泊和热带雨林。我们鹭湖小区前的山峦...
    冰心如你阅读 5,272评论 1 0

友情链接更多精彩内容