NSDictionary
1、底层是哈希表+拉链法
2、对_CFDictionary的封装
3、字典的hash实现非常任性的返回了键值对个数※※※※
NSMutableArray
1、连续的存储空间
2、取的某个下标下存储数据的时间几乎相同
3、存储空间不够的时候会整体复制到一个新的存储空间(数量巨大则会消耗成倍时间)
4、arrayWithCapacity会直接取的一块大于连续空间的内存(貌似不会相等,试了好多次,没有相等过)
TaggedPointer
1、NSDate/NSNumber
2、当少于九个纯ASCII时候,NSString也是该类型。一旦有其余类型,则立即变为_NSCFString
3、无isa指针
锁
1、synchronized 关键字加锁 互斥锁,性能较差不推荐使用
2、NSLock 互斥锁 不能多次调用 lock方法,会造成死锁
3、 NSRecursiveLock 递归锁
4、dispatch_semaphore 信号量实现加锁
内存管理
1、ARC
2、修饰符
3、栈,堆,全局/静态,常量,代码各区
Block
1、NSStackBlock存储于栈区,NSGlobalBlock存储于程序数据区,NSMallocBlock存储于堆区
2、block中引用外部变量,则生成在堆。方法中带block是栈区。block自己玩就是数据区。
layoutSubviews
1、有子视图才会调用
2、在1的前提下。addsubview 会调用,自己view的frame发生变化时候,自己的子view发生frame变化时候,滚动的时候,屏幕旋转的时候。
iOS 用户响应事件
1、UITouch、UIControl、UIGestureRecognizer