//
// 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 ;
}

最新文章

  1. 存在即合理,重复轮子orm java版本
  2. jquery 替换img 属性
  3. SqlSever基础 intersect 交集 两个查询结果共有的
  4. Git教程之创建版本库(2)
  5. 解决 Chrome 浏览器自动调整小于11px字体的问题
  6. videojs 动态加载视频
  7. tar.bz2解压
  8. git(2)----Git的常用撤销技巧与解决冲突方法
  9. Caused by: java.lang.NoSuchMethodError: javax.persistence.Table.indexes()[Ljavax/persistence/Index
  10. 使用NOOBS给树莓派安装系统Raspbian
  11. TCP/IP的四元组、五元组、七元组
  12. [Swift]LeetCode372. 超级次方 | Super Pow
  13. 不同浏览器中scrollHeight的比较
  14. oracle 中如何定位重要(消耗资源多)的SQL
  15. 第7章 Ajax数据爬取
  16. IDEA+SpringMVC+Spring+Mybatis
  17. 【转】: 塞尔达组在GDC2017演讲的文字翻译:显示的力量
  18. MySort试验记录
  19. LWIP协议栈2-
  20. node.js内存缓存的性能情况

热门文章

  1. jQuery封装的选项卡方法
  2. TCP协议滑动窗口(一)——控制大批量数据传输速率
  3. Android集成二维码扫描功能
  4. checkbox与文字混排无法对齐到一行的解决办法
  5. 01--Java集合知识
  6. CSS——宠物demo
  7. quartz 数据库表含义解释
  8. 谈一谈a:link、a:visited、a:hover、a:active的正确使用顺序
  9. vue移动端地址三级联动组件(一)
  10. Excel 导入 分批导入