标签:
类工厂方法:
概念:
类工厂方法就是是用于快速创建对象的类方法.
我们代码以Person类为名
1 + (instancetype)person{ //此处为小写的类名 2 return[[Person alloc]init]; //返回的为初始化的对象 3 }
1 int main(int argc, const char * argv[]) {
2 Person *p = [Person person]; //调用类方法person
3 return 0;
4 }
我们可以看到这便是我们的工厂方法 而在main函数中我们是通过类方法的方式去调用它的也没
有见到Person *p = [[Person alloc]init]; 或者 Person *p = [Person new];这两种方式吧!
但是我们可以看到在xcode中OC一般不是这么玩的吧 一般后面都具有一个参数或者两个以及更多,那么方法的
延伸不就出来了吗!!!
1 + (instancetype)personWithAge:(int)age{
2 // Person *p = [[Person alloc] init];
3 Person*p = [[self alloc]init]; //注意这里用的self不是Person
4 p.age= age;
5 return p;
6 }
1 int main(int argc, const char * argv[]) {
2 Person *p = [Person personWithAge:6];//是不是感觉似曾相识 这种方式很多地方都有用到吧
3 NSLog(@"%i",p.age);
4 return 0;
5 }
补充(如有继承)
大家可以看到我上述中 + (instancetype)personWithAge:(int)age 这个类方法中 Person改为了self,是因为考虑到继承,如果我创建了一个子类Son类我希望他能通过person这个类方法创建,如果是Person那么创建出来的对象就是Person对象,那么我改为了self,只要是谁调用这个方法,那么则创建出来的对象就是这个谁
使用构造方法的注意点:
1、一定是类方法
2、方法名称为小写的类名
标签:
原文地址:http://www.cnblogs.com/ljy-666/p/4986532.html