码迷,mamicode.com
首页 > 其他好文 > 详细

2、类工厂-OC

时间:2015-11-22 20:14:09      阅读:118      评论:0      收藏:0      [点我收藏+]

标签:

类工厂方法:
   概念:

    类工厂方法就是是用于快速创建对象的类方法.

 

我们代码以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、方法名称为小写的类名

 

2、类工厂-OC

标签:

原文地址:http://www.cnblogs.com/ljy-666/p/4986532.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!