FLEX原理详解
FLEX介绍
FLEX是一个可以用在iOS系统上的调试库。使用FLEX,可以在程序运行时很方便的查看系统log,网络请求,内存堆栈,查看当前内存中运行的对象,并可以直接调用对象的某个方法。也可以动态查看当前页面中的UI元素节点。
因此,FLEX也被成为调试神器。
我们可以在GithubFLEX上找到FLEX的源码。
也可以通过pod ‘FLEX’ ,快速将FLEX加入到工程中来。
FLEX的使用
在实际应用过程中,我们可以用FLEX做很多事情。
FLEX是一个可以用在iOS系统上的调试库。使用FLEX,可以在程序运行时很方便的查看系统log,网络请求,内存堆栈,查看当前内存中运行的对象,并可以直接调用对象的某个方法。也可以动态查看当前页面中的UI元素节点。
因此,FLEX也被成为调试神器。
我们可以在GithubFLEX上找到FLEX的源码。
也可以通过pod ‘FLEX’ ,快速将FLEX加入到工程中来。
在实际应用过程中,我们可以用FLEX做很多事情。
N = 323;17*19 = 323 私钥
L = 144;16 18 最小公倍数 144
E = 5; 1<E<L && gcd(E,L) =1
公钥(E,N) = (5,323)
私钥 (D,N) = (29,323) 5*29mode144 = 1
明文 20
密文为 20^5===323 == 39
反算 39^29===323
305 * 286 === 323 = 20
N = 3137 = 1147
L = 3036=566 = 180
E = 17 D = 53
明文20
密文 20^17mod1147 ==
Block的本质就是C语言中的指针函数调用。我们平时在OC中写的Block代码,在clang编译的时候,都会被转换成一个静态函数,并通过Struct包装他的函数地址,用来方便进行调用。
对于Block中自动捕获的变量,会在创建block Struct的时候赋值给到struct 内的一个变量。
Block在经过clang编译后,会被转成三块实现:
对于用__block 进行描述的变量,在实际编译过程中,会变成一个堆里面的对象。
通过打印Block的类型,可以看到Block有几个不同的类型。
使用 __block 标记符标记的变量,会变被包装成一个对象。
串行队列与并行队列
同步执行与异步执行
如何OC上的GCD本质是什么?如何做到跨平台使用
FLEX是一个可以用在iOS系统上的调试库。使用FLEX,可以在程序运行时很方便的查看系统log,网络请求,内存堆栈,查看当前内存中运行的对象,并可以直接调用对象的某个方法。也可以动态查看当前页面中的UI元素节点。
因此,FLEX也被成为调试神器。
我们可以在GithubFLEX上找到FLEX的源码。
也可以通过pod ‘FLEX’ ,快速将FLEX加入到工程中来。
在实际应用过程中,我们可以用FLEX做很多事情。
串行队列与并行队列
同步执行与异步执行
如何OC上的GCD本质是什么?如何做到跨平台使用
串行队列与并行队列
同步执行与异步执行
如何OC上的GCD本质是什么?如何做到跨平台使用
1. 通过runtime的关联对象给对象额外增加实例。
关联对象,很聪明的做法就是使用_cmd指针作为key,不用再额外维护一个字符或其他对象。
1 | objc_setAssociatedObject(self, _cmd, value, OBJC_ASSOCIATION_RETAIN); |
2. JS中实现的消息转发
3.关键字typeof()
1 | __weak typeof(self) weakSelf = self; |
4.objectForKeyedSubscript:
实现了这个方法,就能以 a[key] 的形式来取值。
5.
#if !__has_feature(objc_arc)
#error does not support Objective-C Automatic Reference Counting (ARC)
#endif
通过这个宏来判断该文件是否支持ARC,如果不支持ARC,则报错。