1.bounds 与 frame的区别:
frame: view在父view坐标系统中的位置和大小。(参照点是,父亲的坐标系统)
bounds:view在本地坐标系统中的位置和大小。(参照点是,本地坐标系统,就相当于ViewB自己的坐标系统,默认以0,0点为起点)
顺便一提:center:view的中心点在父view坐标系统中的位置和大小。(参照点是,父亲的坐标系统)
具体可以下面的图示:
2.类方法与实例方法的区别:
实例方法是建立实例,实例中才有的方法。
类方法是直接可以使用类引用,加有static关键字,不需要实例化就可以使用的方法,一般在项目中类方法都是设置为工具类使用的。
说明: 一个方法,如果不加static关键字,那么这个方法是属于类实例的,意思就是他属于类的某个实例,通过这个实例调用它,对类的其他实例不产生影响.在
方法前面加static关键字,就代表这个方法属于这个类本身,不属于他的任何实例,意思就是说,这个方法可以不通过实例调用,并且所有的实例都共享
这一个方法,对方法的调用各个实例相互可见。
使用方法:
类方法可以直接调用类变量和类方法。
类方法不可以直接调用实例变量和实例方法。
实例方法可以调用类方法,访问类变量,但是不提倡这样做,会把类方法和类变量混淆成实例方法和实例变量。
3.响应者链:
参考资料:
http://www.jianshu.com/p/2c5678c659d5
http://www.cocoachina.com/ios/20160113/14896.html
4.didSet 与 willSet:
属性观察者,类似于触发器。用来监视属性的除初始化之外的属性值变化,当属性值发生改变时可以对此作出响应。有如下特点:
a,不仅可以在属性值改变后触发didSet,也可以在属性值改变前触发willSet。
b,给属性添加观察者必须要声明清楚属性类型,否则编译器报错。
c,willSet可以带一个newName的参数,没有的话,该参数默认命名为newValue。
d,didSet可以带一个oldName的参数,表示旧的属性,不带的话默认命名为oldValue。
e,属性初始化时,willSet和didSet不会调用。只有在初始化上下文之外,当设置属性值时才会调用。
f,即使是设置的值和原来值相同,willSet和didSet也会被调用
原文出自:www.hangge.com转载请保留原文链接:http://www.hangge.com/blog/cache/detail_519.html