摘要:
HTTPS(HyperText Transfer Protocol over Secure Socket Layer),可以看成HTTP+SSL/TLS。其中TLS(Transport Layer Security,传输层安全)是SSL的改进。 1、HTTP的问题 1)通信内容明文,可能被窃听。 2 阅读全文
摘要:
Objective-C autorelease https://opensource.apple.com/source/objc4/objc4-532/runtime/NSObject.mm.auto.html @autoreleasepool 双向链表 阅读全文
摘要:
KVO(Key Value Observing,键值观察),是Objective-C观察者模式的实现。当被观察对象的某个属性发生变化时,观察对象就会收到通知。 实现原理: 1)在运行期,为被观察对象的类xxx动态创建一个子类,名为NSKVONotifying_xxx 2)在子类NSKVONotify 阅读全文
摘要:
多线程在Objective-C项目中占有很大的比重,它能提高程序的运行效率,但也因此带来线程安全问题。而锁就是解决线程安全问题最常用的武器。 锁有很多种。 1、NSLock,非递归锁 同个线程,连续lock多次会死锁 2、NSRecursiveLock,递归锁 同个线程,连续lock多次不会死锁 3 阅读全文
摘要:
1、weak是弱引用,所引用的对象计数不会加1。 2、weak变量在其引用的对象被销毁之后,会被置为nil。 3、weak通常用于block, delegate, NSTimer,以解决循环引用带来的内存泄漏问题。 NSObject *obj = [[NSObject alloc] init]; / 阅读全文
摘要:
MVC 阅读全文
摘要:
@synchronized是线程同步锁,易用、可读性高。 @synchronized(self) { 临界区 } 利用如下命令将其重写 clang -rewrite-objc file 得到C++实现 { id _sync_obj = (id)self; objc_sync_enter(_sync_ 阅读全文
摘要:
main函数是我们所熟知的程序入口,Java、Python、C++等,虽语法各异,但皆是如此。然而,程序真正的起点并非main函数,在此之前,就已经干了很多事情。 1、在main函数打个断点,从调用栈可以看到,是动态库dyld(dylib即dynamic library)里的start方法调了mai 阅读全文
摘要:
initialize和load 阅读全文
摘要:
NSTimer,即计时器,用于定时执行一些任务,一次或者多次。 系统Foundation框架提供的最常用方法如下,创建一个NSTimer,并将它放到当前runloop的default mode中。 1、怎么保证在未来某个时间点,要执行任务时,target还有效呢?target完全有可能被释放了呀。鉴 阅读全文