Keychain 介绍
Keychain Services 是 OS X 和 iOS 都提供一种安全地存储敏感信息的工具,比如,存储用户ID,密码,和证书等。存储这些信息可以免除用户重复输入用户名和密码的过程。Keychain Services 的安全机制保证了存储这些敏感信息不会被窃取。简单说来,Keychain 就是一个安全容器。
回忆昨天,珍惜今天,期待明天
ReactiveCocoa一直在各大名博上面推荐,今天我找个时间特意学习一下。
众所周知,ReactiveCocoa是一个函数响应式编程的框架。那我们在学习之前最好了解一下什么是响应式编程。
函数响应式编程(Functional Reactive Programming,简称FRP)。
采用别人的一个小例子:
a = 2
b = 2
c = a + b // c is 4
b = 3
// now what is the value of c?
如果是像我们日常的OOP,那c的结果应该是4。但是是FRP,c的值会随着b的变化而变化,也就是说当b=3
时,c应该是5。
比较直观的例子就是Excel,当改变某一个单元格的内容时,该单元格相关的计算结果也会随之改变。
GCD是一种很强大的多线程解决方案,但NSOperation同样也支持多样性的操作。
NSOperation有三种状态
isReady -> isExecution -> isFinish
NSOperationQueue只有当它管理的所有操作的isFinished属性全标为YES以后操作才停止出列,也就是队列停止运行,所以正确实现这个方法对于避免死锁很关键。
原来想写一下Runtime的实际应用,想了一下,自已才疏学浅,除了关联对象和Method Swizzle。但这两个知识点很多高人写得都很好,我觉得直接转一下就好了。哈哈~
##Encode小技巧
突然想起还有个encode的小技巧,虽然我觉得应该不少人知道这个吧,但作为一个代码段,我觉得这个小技巧还是挺有用的。主要是利用反射获取类的成员变量名,再加上KVO就可以获取值与设值。
1 | -(void)encodeWithCoder:(NSCoder *)aCoder{ |
在前面我们讲到[receiver message]
会被编译器转化为
objc_msgSend(receiver, @selector(message))
同时,我们也知道在一个对象里面有个methodLists
这样子的属性。今天我们就讲下大概是什么调用方法的呢?
首先判断一下receiver对象是否为空,在Objective-C中向nill发送消息是不会Crash的,取出receiver
对象里面的cache
方法列表,在里面查找方法。找不到的话,那就从methodList
方法里面查找。如果再找不到,就按照我们之前说的元类那个图一样,一层一层往父类找。直到找到为止,如果确实找不到,那就执行消息转发。如下图:
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.