八:类工厂方法

一:基本用法

类工厂方法作用:提高编码效率,快速创建对象的方法

规范:1、一定是+开头

     2、方法以类名开头,首字母小写。

   3、一定有返回值,返回类型为id/instancetype

比如:在类的声明和实现中

无参数:

@interface Person : NSObject

+ (instancetype)person;

@end
@implementation

+ (instancetype)person{
    return [[Person alloc] init];
}

@end

在主函数创建对象中就可以直接使用,简化代码。

Person *p1 = [Person person];  //此处的Person person的作用相当于Person new

 

有参数:

@interface Person : NSObject

@property int age;
+ (instancetype)personWithAge:(int)age;

@end
@implementation

+ (instancetype)personWithAge:(int)age
{
    Person *p = [[self alloc] init];  //此处的self不要使用Person
    p.age = age;
    return p;
}

@end

在主函数中就可以直接创建对象使用

Person *p2 = [Person personWithAge:10];

 

二、扩展

给一个类提供自定义构造方法和自定义工厂方法,都是用于快速创建一个对象(初始化对象),本身苹果底层的使用规则也是如此,例如:

1 NSString *p = [[NSString alloc] init];
2 NSString *p = [NSString string];
3 NSString *p1 = [[NSString alloc] initWithString:(nonnull NSString *)];
4 NSString *p1 = [NSString stringWithString:(nonnull NSString *)];
5     
6 NSArray *a = [[NSArray alloc] init];
7 NSArray *a = [NSArray array];
8 NSArray *a1 = [[NSArray alloc] initWithObject:(nonnull id)];
9 NSArray *a1 = [NSArray arrayWithObject:(nonnull id)];
posted @ 2016-04-26 06:55  hissia  阅读(445)  评论(0编辑  收藏  举报