iOS KVO的原理
- @interface Sark : NSObject
- @property (nonatomic, copy) NSString *name;
- @end
- @implementation Sark
- @end
- Sark *sark = [Sark new];
- // breakpoint 1
- [sark addObserver:self forKeyPath:@"name" options:NSKeyValueObservingOptionNew context:nil];
- // breakpoint 2
- sark.name = @"萨萨萨";
- [sark removeObserver:self forKeyPath:@"name"];
- // breakpoint 3
- // breakpoint 1
- (lldb) po sark.class
- Sark
- (lldb) po object_getClass(sark)
- Sark
- // breakpoint 2
- (lldb) po sark.class
- Sark
- (lldb) po object_getClass(sark)
- NSKVONotifying_Sark
- // breakpoint 3
- (lldb) po sark.class
- Sark
- (lldb) po object_getClass(sark)
- Sark
- @interface NSObject (DLIntrospection)
- + (NSArray *)classes;
- + (NSArray *)properties;
- + (NSArray *)instanceVariables;
- + (NSArray *)classMethods;
- + (NSArray *)instanceMethods;
- + (NSArray *)protocols;
- + (NSDictionary *)descriptionForProtocol:(Protocol *)proto;
- + (NSString *)parentClassHierarchy;
- @end
- // breakpoint 1
- (lldb) po [object_getClass(sark) instanceMethods]
- <__NSArrayI 0x8e9aa00>(
- - (void)setName:(id)arg0 ,
- - (void).cxx_destruct,
- - (id)name
- )
- // breakpoint 2
- (lldb) po [object_getClass(sark) instanceMethods]
- <__NSArrayI 0x8d55870>(
- - (void)setName:(id)arg0 ,
- - (class)class,
- - (void)dealloc,
- - (BOOL)_isKVOA
- )
- // breakpoint 3
- (lldb) po [object_getClass(sark) instanceMethods]
- <__NSArrayI 0x8e9cff0>(
- - (void)setName:(id)arg0 ,
- - (void).cxx_destruct,
- - (id)name
- )
- @implementation Sark
- - (void)willChangeValueForKey:(NSString *)key
- {
- NSLog(@"%@", NSStringFromSelector(_cmd));
- [super willChangeValueForKey:key];
- }
- - (void)didChangeValueForKey:(NSString *)key
- {
- NSLog(@"%@", NSStringFromSelector(_cmd));
- [super didChangeValueForKey:key];
- }
- @end
iOS KVO的原理的更多相关文章
- iOS KVO概述
iOS KVO概述 面试中经常会被问到:什么是KVO?这个问题既然出现概率这么大,那么我们就来详细讲一讲到底什么是KVO.下次再有面试官问你的时候,你就可以娓娓道来,以彰显高逼格 概述 问:什么是KV ...
- iOS:KVO/KVC 的概述与使用
iOS:KVO/KVC 的概述与使用 KVO APP开发技术QQ群:347072638 一,概述 KVO,即:Key-Value Observing,它提供一种机制,当指定的对象的属性 ...
- iOS程序启动原理---iOS-Apple苹果官方文档翻译
本系列所有开发文档翻译链接地址:iOS7开发-Apple苹果iPhone开发Xcode官方文档翻译PDF下载地址 //转载请注明出处--本文永久链接:http://www.cnblogs.com/Ch ...
- iOS kvo 结合 FBKVOController 的使用
iOS kvo 结合 FBKVOController 的使用 一:FBKVOControlloer是FaceBook开源的一个 在 iOS,maxOS上使用 kvo的 开源库: 提供了block和@s ...
- iOS应用启动原理图解 及ARC强弱引用
iOS应用启动原理图解(红色箭头表示strong强引用,绿色箭头代表weak若引用) 只要将UI控件拖到Storyboard里控制器的大view上,Xcode会自动将这些控件以强引用的形式加入到sel ...
- iOS Category实现原理 (补充)
iOS Category实现原理 (补充) load 和 initialize load load方法会在程序启动就会调用,当装载类信息的时候就会调用. 调用顺序看一下源代码.在 objc-loadm ...
- iOS Category实现原理
iOS Category实现原理 实现原理 我们不主动引入 Category 的头文件,Category 中的方法都会被添加进主类中.我们可以通过 - performSelector: 等方式 对 C ...
- iOS 应用签名原理&重签名
在苹果的日常开发中,真机测试与打包等很多流程都会牵扯到各种证书,CertificateSigningRequest,p12等.但是很多相应的开发者并不理解iOS App应用签名的原理和流程.今天着重讲 ...
- iOS多线程编程原理及实践
摘要:iOS开发中,开发者不仅要做好iOS的内存管理,而且如果你的iOS涉及多线程,那你也必须了解iOS编程中对多线程的限制,iOS主线程的堆栈大小为1M,其它线程均为512KB,且这个限制开发者是无 ...
随机推荐
- 从省市区多重级联想到的,react和jquery的差别
在我们的前端项目里经常会用到级联的select,比如省市区这样.通常这种级联大多是动态的.比如先加载了省,点击省加载市,点击市加载区.然后数据通常ajax返回.如果没有数据则说明到了叶子节点. 针 ...
- printf的格式控制的完整格式
printf的格式控制的完整格式:% - 0 m.n l或h 格式字符下面对组成格式说明的各项加以说明:①%:表示格式说明的起始符号,不可缺少.②-:有-表示左对齐输出,如省略表示右对齐输出 ...
- Microsoft AzureStorageAccount for Powershell
使用Powershell 创建的存储账户,注意StorageAccountName只能使用小写字母以及数字, -Location参考http://www.cnblogs.com/SignalTips/ ...
- Oracle 中的replace函数的应用
replace 函数用法如下: replace('将要更改的字符串','被替换掉的字符串','替换字符串') oracle 中chr()函数 CHR() --将ASCII码转换为字符 语法CHR(nu ...
- JAVA读取TXT文本中的数据
现在在Demo.txt中存在数据: ABC 需要将ABC从文本文件中读取出来 代码片: import java.io.*; class FileReaderDemo { public static v ...
- 【ajax跨域】原因原理解决
1.安全,跨域cookie iframe 2.很简单,就是利用<script>标签没有跨域限制的“漏洞”(历史遗迹啊)来达到与第三方通讯的目的.当需要通讯时,本站脚本创建一个<scr ...
- 高效开发Android App的10个建议(转)
假如要Google Play上做一个最失败的案例,那最好的秘诀就是界面奇慢无比.耗电.耗内存.接下来就会得到用户的消极评论,最后名声也就臭了.即使你的应用设计精良.创意无限也没用. 耗 电或者内存占用 ...
- oracle中事务处理
事务用于保证数据的一致性,它由一组相关的dml语句组成,该组的dml语句要么全部成功,要么全部失败. 事务和锁 当执行事务操作时(dml语句),oracle会在被作用的表上加锁,防止其它用户改表的结构 ...
- android 开启或者隐藏软键盘
一. 隐藏软键盘方法一(注:此方法本人使用时发现isActivie()失效,建议还是用其他方法..): InputMethodManager imm = (InputMethodManager)get ...
- 机器学习中的数学-矩阵奇异值分解(SVD)及其应用
转自:http://www.cnblogs.com/LeftNotEasy/archive/2011/01/19/svd-and-applications.html 版权声明: 本文由LeftNotE ...