- 不要等到明天,明天太遥远,今天就行动。
须读:看完该文章你能做什么?
能学会基本创建类工厂方法
学习前:你必须会什么?
什么是类,什么是类方法
1.什么是类[替换链接 Day01-05-类与对象],什么是类方法[替换链接 Day01-09-第一个OC类方法
]
生活中描述事物无非就是描述事物的名称、属性和行为
人:年龄、身高、体重
程序如何表现一个类(下面只不过是简单的一个声明而已):
@interface Person : NSObject
{
int _age;//年龄
}
// 行为
- (void)eat;// 对象方法 需要实例化一个对象 才能调用 [[Person new] eat];
+ (void)eat;// 类方法以+开头 直接使用类调用 [Person eat];
@end
一、本章笔记
一、
什么是类工厂方法:
用于快速创建对象的类方法,我们称之为类工厂方法
类工厂方法中 主要用于 给对象分配存储空间 和 初始化这块存储空间
规范:
1.一定是类方法
2.方法名 以类的名称开头, 首字母小写
3.一定有返回值, 返回值是 id/instancetype
二、
自定义类工厂方法 是苹果的一个规范,
一般情况下,我们会给一个类提供自定义构造方法 和自定义类工厂方法
用于创建一个对象
二、code
main.m
#pragma mark 14-类工厂方法基本概念
#pragma mark 概念
/*
一、
什么是类工厂方法:
用于快速创建对象的类方法,我们称之为类工厂方法
类工厂方法中 主要用于 给对象分配存储空间 和 初始化这块存储空间
规范:
1.一定是类方法
2.方法名 以类的名称开头, 首字母小写
3.一定有返回值, 返回值是 id/instancetype
二、
自定义类工厂方法 是苹果的一个规范,
一般情况下,我们会给一个类提供自定义构造方法 和自定义类工厂方法
用于创建一个对象
*/
#pragma mark - 代码
#import <Foundation/Foundation.h>
#pragma mark 类
#import "Person.h"
#pragma mark - main函数
int main(int argc, const char * argv[])
{
// Person *p = [Person person];
// p.age = 20;
// NSLog(@"age = %i",p.age);
Person *p = [Person personWithAge:33];
NSLog(@"age = %i",p.age);
// [[NSString alloc]init];
// [NSString string];
// [NSString alloc]initWithString:<#(nonnull NSString *)#>
// [NSString stringWithString:<#(nonnull NSString *)#>]
// [[NSArray alloc]init];
// [NSArray array];
// [NSArray alloc]initWithObjects:<#(nonnull id), ...#>, nil
// [NSArray arrayWithObjects:<#(nonnull id), ...#>, nil]
return 0;
}
Person
>>>.h
#import <Foundation/Foundation.h>
@interface Person : NSObject
@property int age;
/*
什么是类工厂方法:
用于快速创建对象的类方法,我们称之为类工厂方法
类工厂方法中 主要用于 给对象分配存储空间 和 初始化这块存储空间
规范:
1.一定是类方法
2.方法名 以类的名称开头, 首字母小写
3.一定有返回值, 返回值是 id/instancetype
*/
+ (instancetype)person;
+ (instancetype)personWithAge:(int)age;
@end
>>>.m
#import "Person.h"
@implementation Person
/*
+ (instancetype)person
{
Person *p = [Person alloc];
Person *p1 = [p init];
return p1;
}
*/
+ (instancetype)person
{
return [[Person alloc]init];
}
+ (instancetype)personWithAge:(int)age
{
Person *p = [[Person alloc]init];
p.age = age;
return p;
}
@end
网友评论