作品分享
问答交流
发现
任务
客服工单
一个NSObject对象占用多少内存? 对象的isa指针指向那里? OC的类信息存放在那里? iOS用什么方式实现对一个对象的KVO?(KVO的本质是什么?) KVC Category +load方法和+initialize方法 Block _ _weak
体系分配了16个字节给NSObject对象(通过malloc_size函数得到),但NSObject对象内部只使用了8个字节的空间(64bit环境下,可以通过class_getInstanceSize函数得到)。
instance对象的isa指向class对象; class对象的isa指向meta-class对象; meta-class对象的isa指向基类的meta-class对象;
对象方法、属性、成员变量、协议信息,存放在class对象中; 类方法,存放在meta-class对象中; 成员变量的具体值,存放在instance对象;
实行addOberser时 使用RuntimeAPI动态天生一个子类,而且让instance对象的isa指向这个全新的子类,当修改instance对象的属性时,会调用Foundation的_NSSetXXXValueAndNotify函数: -> willChangeValueForKey: -> 调用父类原来的setter -> didChangeValueForKey: -> 内部会触发监听器(Oberser)的监听方法( observeValueForKeyPathfObject:change:context:) 怎样手动触发KVO? 手动调用willChangeValueForKey:和didChangeValueForKey: 直接修改成员变量会触发KVO么? 不会触发KVO
怎样手动触发KVO? 手动调用willChangeValueForKey:和didChangeValueForKey: 直接修改成员变量会触发KVO么? 不会触发KVO
KVC的全称是Key-Value Coding,俗称“键值编码”,可以通过一个key来访问某个属性。
通过KVC修改属性会触发KVO么? 会触发KVO
block本质上是封装了函数调用以及函数调用环境的OC对象,它内部也有个isa指针。
weak 关键字的作用弱引用,所引用对象的计数器不会加一,并在引用对象被释放的时间主动被设置为 nil。
weak是Runtime维护了一个hash(哈希)表,用于存储指向某个对象的全部weak指针。weak表其实是一个hash(哈希)表,Key是所指对象的所在,Value是weak指针的所在(这个所在的值是所指对象指针的所在)数组。
1、调用objc_release 2、由于对象的引用计数为0,以是实行dealloc 3、在dealloc中,调用了_objc_rootDealloc函数 4、在_objc_rootDealloc中,调用了object_dispose函数 5、调用objc_destructInstance 6、末了调用objc_clear_deallocating: 1、从weak表中获取废弃对象的所在为键值的记载 2、将包罗在记载中的全部附有 weak修饰符变量的所在,赋值为nil 3、将weak表中该记载删除 4、从引用计数表中删除废弃对象的所在为键值的记载
1、从weak表中获取废弃对象的所在为键值的记载 2、将包罗在记载中的全部附有 weak修饰符变量的所在,赋值为nil 3、将weak表中该记载删除 4、从引用计数表中删除废弃对象的所在为键值的记载
Swift从入门到醒目 每周一道算法题 恋上数据结构与算法(一) 恋上数据结构与算法(二)
如果必要跟我交换的话: ※ Github: https://github.com/wsl2ls ※ 简书:https://www.jianshu.com/u/e15d1f644bea
举报
Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )
GMT+8, 2024-11-22 00:40, Processed in 0.152806 second(s), 35 queries.© 2003-2025 cbk Team.