七、+(void)load 和+(void)initialize 的区别
(1) +(void)load:表示程序开始加载到内存时调用 2.自身未定义,不会沿用父类的方
法。3.lei 别中的定义全部执行,先执行类自身的实现,再执行类别(Category)中的实现
(2) +(void)initialize:便是该类首次使用将被调用 2.自身未定义,hui 沿用父类的方法。
3.类别中的定义,会执行最后一个,并且覆盖类的方法
http://www.cnblogs.com/ider/archive/2012/09/29/objective_c_load_vs_initialize.html
八、weak 和 strong assign
strong:强引用,用于 OC 对象,相当于 MRC 中的 reatin,引用计数器加 1
weak:弱引用,用于 OC 对象,相当于 MRC 中的 assign,引用计数器不加 1
assign:用于一般数据类型,和 MRC 中的 assign 一样,引用计数器不加 1
九、category 的使用
(1)category 的声明:
@interface Person (WJPerson)
-(void)goShopping;
@end
(2)category 的实现:
@implementation Person (WJPerson)
-(void)goShopping
{
NSLog(@"去购物");
}
@end
(3)category 的使用:
1)category 可以在不改变原有类的基础上,给类扩充一些方法
2)可以让庞大的类分模块开发。
3)一个庞大的类进行多人开发,更利于团队合作。
(4)category 的注意点:
1)分类不能扩充属性和成员变量,只能给类扩充方法
2)分类里面的@property 只能生成 setter 和 getter 的声明,并不能生成 setter 和 getter 的实
现
3)如果分类里面有和类里面相同名字的方法,对象调用的时候回调用分类的方法,不去调
用类里面的方法。如果有多个分类里面同名的方法,则会调用最后一个参与编译分类里面的
方法
十、Person 和 WJPerson 的区别