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,且这个限制开发者是无 ...
随机推荐
- Global::pickSpecificTable_DNT
/*************************************************** Created Date: 13 Jul 2013 Created By: Jimmy Xie ...
- .NET特性-Attribute
两篇文章有助于学习Attribute特性的概念. http://blog.csdn.net/byondocean/article/details/6802111 http://www.cnblogs. ...
- useradd命令详解
功能说明:建立用户帐号.语 法:useradd [-mMnr][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g ...
- Java的哪些事
Java的哪些事--------------------------------------------------Java学习分2个方面: Java语法与Java类库 Java: A simple, ...
- Unity 优化
1. 尽量避免每帧处理比如: function Update() { DoSomeThing(); } 可改为每5帧处理一次: function Update() { == ) { DoSomeThi ...
- mysql语句大全
转自:http://www.cnblogs.com/yunf/archive/2011/04/12/2013448.html 1.说明:创建数据库 CREATE DATABASE database ...
- C#加密NodeJS解密
C#代码: class Program { static void Main(string[] args) { Console.WriteLine(", "abcdefghijkl ...
- NodeJS下访问SQL Server
1.下载node-sqlserver (1)msnodesql (msnodesql-0.2.1-v0.8-x64.msi)下载地址:下载 自行选择与自己系统相符的版本,点击安装. (2)msnod ...
- [SC] OpenSCManager FAILED 1722
在服务器A(windows server 2008 r2)执行如下命令访问远端服务器B(windows server 2003)的服务运行状况: sc \\servername query " ...
- 常见的装置与其在Linux当中的档名
需要特别留意的是硬盘机(不论是IDE/SCSI/U盘都一样),每个磁碟机的磁盘分区(partition)不同时, 其磁碟档名还会改变呢!下一小节我们会介绍磁盘分区的相关概念啦!需要特别注意的是磁带机的 ...