pragma mark 类工厂方法基本概念
pragma mark 概念
/**
* 自定义工厂方法
什么是工厂方法(快速创建方法)
类公共方法 是一种 用于分配、初始化实例 并返回一个它自己的实例的类方法, \
类工厂方法很方便,因为他们允许您只使用一个步骤(而不是两个步骤) 就能创建对象,例如new
*/
pragma mark 代码
#import <Foundation/Foundation.h>
#pragma mark 类
#import "Person.h"
#pragma mark main函数
int main(int argc, const char * argv[])
{
// Person *p = [[Person alloc]init];
// Person *p1 = [Person person];
Person *p1 = [Person personWithAge:40];
NSLog(@"age = %i",p1.age);
/*
自定义类工厂方法 是 苹果的一个规范, \
一般情况下, 我们会给一个类 提供自定义构造方法 和 自定义类工厂方法 用于创建一个对象
*/
#warning 苹果系统的 构造方法(对象方法) 和 类工厂方法(类方法) --- NSString
[[NSString alloc]init];
[NSString string];
[[NSString alloc]initWithString:@"1"];
[NSString stringWithString:@"2"];
// 数组 NSArray
[[NSArray alloc]init];
[NSArray array];
[NSArray alloc]initWithObjects:@"1", nil];
[NSArray arrayWithObjects:@"2", nil];
return 0;
}
Person.h //人类
#import <Foundation/Foundation.h>
@interface Person : NSObject
@property int age;
#warning 什么是类工厂方法
/*
什么是类工厂方法:
用于 快速创建 对象的方法, 我们称之为工厂方法
类工厂方法中 主要用于 给对象分配存储空间和初始化
规范:
1. 一定是类方法
2. 方法名称以类名开头, 首字母小写
3. 一定有返回值, 返回值是 id / instancetype
*/
+ (instancetype)person;
#warning 类工厂方法带参数
+ (instancetype)personWithAge:(int)age;
@end
Person.m
#import "Person.h"
@implementation Person
#warning 类工厂方法
/*
+ (instancetype)person
{
// 1. 分配存储空间
// 2. 初始化
// 3. 返回对象
Person *p = [Person alloc];
Person *p1 = [p init];
p1.age = 30;
NSLog(@"age = %i",p1.age);
return p1;
}
*/
#warning 类工厂方法 简化
+ (instancetype)person
{
return [[Person alloc]init];
}
#warning 类工厂方法带参数
+ (instancetype)personWithAge:(int)age
{
Person *p = [[Person alloc]init];
p.age = age;
return p;
}
@end