都是用来控制某个函数在一定时间内执行多少次的解决方案。 debounce 当调用动作触发一段时间后,才会执行该动作,弱在这段时间间隔内又调用此动作则将重新计算时间间隔。 th...
常见的五种时间复杂度: O(1):常数复杂度,最快的算法 取数组第1000000个元素字典和集合的存取都是O(1)数组的存取是O(1) O(logN):对数复杂度 假设有一个...
weak是runtime维护的一个hash表,用于存储指向某一个对象的所有指针。weak表其实是一个hash表,key是所指对象的指针,value是weak指针的地址(这个地...
NSDictionary是使用hash表来实现key和value之间的映射和存储的,hash函数设计的好坏影响着数据的查找的访问效率。数据在hash表中分布的越均匀,其访问效...
Application:存放程序源文件,上架前经过数字签名,上架后不可修改; Document:常用目录,iCloud备份目录,存放数据。(这里不能存缓存文件,否则上架不被通...
绘制一个UIView最灵活的方法就是由它自己完成绘制。实际上你不是绘制一个UIView,而是子类化一个UIView并赋予绘制自己的能力。当一个UIView需要绘制操作时,dr...
输出结果:1 分析:首先任务一,这是肯定没问题的,只是接下来,程序遇到同步线程,那么它会进入等待,等待任务二执行完,然后执行任务三。但这是队列,有任务来,当然会将任务加到队尾...
栈区(stack) 由编译器自动分配并释放,存放函数的参数值,局部变量等。栈是系统数据结构,对应线程/进程是唯一的。优点是快速高效,缺点是有限制,数据不灵活 [先进后出] 栈...
传递过程 -> hitTest 调用顺序每当手指接触屏幕,操作系统和会把事件传递给当前的 APP,在 UIApplication 接收到手指的事件之后,就会去调用 UIWi...
CGPoint 在OC中是一个结构体,结构体一般采用内存对齐的方式分配,比如:结构体内有 char、float、int、 long 、double几种数据类型。 char 1...
Apple 人机交互指南中指出,按钮点击热区应不小于44x44pt,否则这个按钮就会让用户觉得“很难用”。解决方法是重写按钮中的pointInside方法,使得按钮热区不够4...
区别 Auto Layout 是针对多尺寸屏幕的设计。其本质是通过线性不等式设置UI控件的相对位置,从而适配多种 iPhone / iPad屏幕的尺寸。 Frame 是基于 ...
这个类被release的时候会被调用; 这个对象的retain count 为 0 的时候会被调用;或者说一个对象或者被置nil的时候。
load 是只要类所在的文件被引用就会被调用,而initialize 是在类或者其子类的第一个方法被调用前调用。所以 如果类没有被引用进项目,就不会调用load方法; 即使类...
重写 object 的 respondsToSelector 方法,实现出现 EXEC_BAD_ACCESS前,访问的最后一个 object; 开启项目中的Zombie检测;...
自动触发场景:在注册 KVO 之前设置一个初始值,注册之后,设置一个不一样的值,这样就可以触发了。 手动触发:
关于Mode首先要知道一个RunLoop 对象中可能包含多个Mode,且每次调用 RunLoop 的主函数时,只能指定其中一个 Mode(CurrentMode)。切换 Mo...
不能向编译后得到的类中怎家实例变量; 能向运行时创建的类中添加实例变量; 原因: 因为编译后的类已经注册在 runtime 中,类结构体中的 objc_ivar_list 实...