oc37--类工厂方法
2024-10-21 05:10:04
//
// Person.h #import <Foundation/Foundation.h> @interface Person : NSObject @property int age;
@property double width;
/*
什么是类工厂方法:
用于快速创建对象的类方法, 我们称之为类工厂方法
类工厂方法中主要用于 给对象分配存储空间和初始化这块存储空间 规范:
1.一定是类方法 +
2.方法名称以类的名称开头, 首字母小写
3.一定有返回值, 返回值是id/instancetype
*/
+ (instancetype)person; + (instancetype)personWithAge:(int)age andWidth:(double)width;
@end
//
// Person.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 andWidth:(double)width
{
Person *p = [[Person alloc] init];
p.age = age;
p.width = width;
return p;
} @end
//
// main.m
// 自定义类工厂方法 #import <Foundation/Foundation.h>
#import "Person.h" int main(int argc, const char * argv[]) { Person *p = [[Person alloc] init];
Person *p12 = [Person person];
p12.age = ; Person *p1 = [Person personWithAge: andWidth:2.2];
NSLog(@"age = %i", p1.age);
/*
自定义类工厂方法是苹果的一个规范(苹果就是这么写的), 一般情况下, 我们会给一个类提供自定义构造方法和自定义类工厂方法用于创建一个对象
*/ /*
NSString *s1 = [[NSString alloc] init];
NSString *s2 = [NSString string]; NSString *s3 = [[NSString alloc] initWithString: @"ss"];
NSString *s4 = [NSString stringWithString:<#(NSString *)#>]; NSArray *a1 = [[NSArray alloc] init];
NSArray *a2 = [NSArray array];
NSArray *a3 = [NSArray alloc] initWithObjects:{1,2,3}, nil
NSArray *a4 = [NSArray arrayWithObjects:<#(id), ...#>, nil]
*/
return ;
}
最新文章
- 存在即合理,重复轮子orm java版本
- jquery 替换img 属性
- SqlSever基础 intersect 交集 两个查询结果共有的
- Git教程之创建版本库(2)
- 解决 Chrome 浏览器自动调整小于11px字体的问题
- videojs 动态加载视频
- tar.bz2解压
- git(2)----Git的常用撤销技巧与解决冲突方法
- Caused by: java.lang.NoSuchMethodError: javax.persistence.Table.indexes()[Ljavax/persistence/Index
- 使用NOOBS给树莓派安装系统Raspbian
- TCP/IP的四元组、五元组、七元组
- [Swift]LeetCode372. 超级次方 | Super Pow
- 不同浏览器中scrollHeight的比较
- oracle 中如何定位重要(消耗资源多)的SQL
- 第7章 Ajax数据爬取
- IDEA+SpringMVC+Spring+Mybatis
- 【转】: 塞尔达组在GDC2017演讲的文字翻译:显示的力量
- MySort试验记录
- LWIP协议栈2-
- node.js内存缓存的性能情况