1,工厂模式时,解决头文件太多问题
在工程中建立一个属性列表文件Property List.plist
NSString *path = [[NSBundle mainBundle] pathForResource:@"Property List" ofType:@"plist"];NSDictionary *dic = [NSDictionary dictionaryWithContentsOfFile:path];
Class cls = NSClassFromString([dic objectForKey:@"classname"]);
Factory *factory = [[cls alloc] init];
shape = [factory createShape];
3,父类的指针指向子类的对象,而子类的对象可以调用子类的方法。
Factory *factory = [[cls alloc] init];
shape = [factory createShape];
4,
/*
加载A的时候依次调用
1 initWithCoder
1 loadView //如果说你进行了重写,会在这里调用,这一步可以参考下文
1 viewDidLoad
1 viewWillAppear
1 viewWillLayoutSubviews
1 viewDidLayoutSubviews
1 viewDidAppear
*/
5,关于loadview
一、loadView
永 远不要主动调用这个函数。view controller会在view的property被请求并且当前view值为nil时调用这个函数。如果你手动创建view,你应该重载这个函数,且 不要在重载的时候调用[super loadview]。如果你用IB创建view并初始化view controller,那就意味着你使用initWithNibName:bundle:方法,这时,你不应该重载loadView函数。
这个方法系统的默认实现是这样:
1;寻找有关可用的nib文件的信息,根据这个信息来加载nib文件 //所以,nib的加载过程是在loadview中完成的哦。
2;如果没有有关nib文件的信息,默认创建一个空白的UIView对象,然后把对象成赋值给viewcontroller的主view。
所以,如果你决定重载这个函数时,你也应该完成这些步骤:
把子类的view赋给view属性(property)(你create的view必须是唯一的实例,并且不被其他任何controller共享),而且你重载的这个函数不应该调用super,这个也是为了保持主view与controller的单一映射关系。
二、viewDidLoad
这个函数在controller加载了相关的views后被调用,而不论这些views存储在nib文件里还是在loadView函数中生成。
这个函数的作用主要是让你可以进一步的初始化你的views。viewDidLoad通常负责的是view及其子view被加载进内存之后的数据初始化的工作,即视图的数据部分的初始化。在iOS 3.0以及更高版本中,你应该重载viewDidUnload函数来释放任何对view的引用或者它里面的内容(子view等等)。
其多数情况下是做nib文件的后续工作。