用于快速创建对象的类方法,称为类工厂方法,类工厂方法主要用于给对象分配存储空间和初始化存储空间
自定义类工厂方法是苹果的规范,一般情况下,我们会给一个类提供一个自定义构造方法和自定义类工厂方法用于创建一个类
- 一定是类方法
- 方法名称以类名称开头,首字母小写
- 一定有返回值,返回值是 id/instancetype
类工厂方法的注意点
只要自定义类工厂方法,在类工厂方法中创建对象一定不要使用类名创建,一定要使用self创建
self在类方法中就代表类对象,谁调用当前方法,self就代表谁
- 使用类工厂方法实例化对象
#import <Foundation/Foundation.h>
@interface Person : NSObject
@property int age;
+ (instancetype)person;
@end
@implementation Person
+ (instancetype)person{
return [[self alloc] init];
}
@end
int main(int argc, const char * argv[]) {
Person *p = [Person person]; // == [Person new] == [[Person alloc] init]
return 0;
}
- 使用类工厂方法实例化对象并传参
#import <Foundation/Foundation.h>
@interface Person : NSObject
@property int age;
+ (instancetype)personWithAge:(int)age;
@end
@implementation Person
+ (instancetype)personWithAge:(int)age {
Person *p = [[self alloc] init];
p.age = age;
return p;
}
@end
int main(int argc, const char * argv[]) {
Person *p = [Person personWithAge:20];
NSLog(@"age: %i", p.age); // age: 20
return 0;
}