一:基本用法
类工厂方法作用:提高编码效率,快速创建对象的方法
规范: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)];