//
// Person.h #import <Foundation/Foundation.h> @interface Person : NSObject @property (nonatomic, assign) int age; + (instancetype)person; - (instancetype)initWithAge:(int)age; + (instancetype)personWithAge:(int)age;
@end
//  Person.m

#import "Person.h"

@implementation Person

//提供构造方法的时候也要提供类工厂方法(API里面是这么写的),如果是MRC还要提供antorelease.

+ (instancetype)person  //类工厂方法
{
return [[[self alloc] init] autorelease];
} - (instancetype)initWithAge:(int)age{ //构造方法
if (self = [super init]) {
_age = age;
}
return self;
} + (instancetype)personWithAge:(int)age //类工厂方法
{
/*
Person *p = [[self alloc] init];
p.age = age;
return [p autorelease];
*/
return [[[self alloc] initWithAge:age] autorelease]; //self = Person;
} - (void)dealloc
{
NSLog(@"%s", __func__);
[super dealloc];
}
@end
//
// main.m
// auatorelease应用场景 #import <Foundation/Foundation.h>
#import "Person.h" int main(int argc, const char * argv[]) { @autoreleasepool { Person *p = [[[Person alloc] init] autorelease];
p.age = ;
NSLog(@"age = %i", p.age); Person *p1 = [[[Person alloc] init] autorelease]; Person *p2 = [[[Person alloc] init] autorelease]; Person *1p = [Person person];
1p.age = ;
NSLog(@"age = %i", 1p.age); // 注意: Foundation框架的类, 但凡是通过类工厂方法创建的对象都是autorelease的
[[NSString alloc] init];
[NSString string]; // [NSString alloc] initWithString:(NSString *)
// [NSString stringWithString:(NSString *)]; Person *p = [[[Person alloc] initWithAge:] autorelease];
NSLog(@"age = %i", p.age); Person *p = [Person personWithAge:];
NSLog(@"age = %i", p.age); }
return ;
}

最新文章

  1. HDU - 1875 畅通工程再续
  2. PHP 开发社区微信服务号实战图解
  3. smarty模板继承
  4. 安装服务Memcached+Nginx+Php linux下安装
  5. Servlet 小试牛刀(doGet,doPost)
  6. 第1章1节《MonkeyRunner源码剖析》概述:前言(原创)
  7. oracle 归档模式开启后数据库宕机解决过程
  8. 题解:[APIO/CTSC 2007]数据备份
  9. PyCharm 如何新建Django工程项目
  10. iPhone手机更换自定义铃声
  11. java实现获取当前年月日 小时 分钟 秒 毫秒
  12. Coprime Arrays CodeForces - 915G (数论水题)
  13. c语言数据类型(二)
  14. 【JEECG技术文档】JEECG 接口权限开发及配置使用说明
  15. 在IDEA中使用MyBatis Generator逆向工程生成代码
  16. CAS Ticket票据:TGT、ST、PGT、PT、PGTIOU
  17. iOS 不支持 PWA,那又怎么样?
  18. WCF系列
  19. iOS各种profile文件
  20. 如何使用Navicat连接Oracle

热门文章

  1. java DDD 基于maven开发的探讨
  2. RecyclerView中item无法充满的问题
  3. 04--Spring知识汇总
  4. Windows Phone 8: NavigationInTransition实现页面切换效果
  5. vue中fetch请求
  6. 几校联考——day1题解
  7. Maximum Value(unique函数,lower_bound()函数,upper_bound()函数的使用)
  8. cin输入过慢用scanf???现在才知道cin可以加速
  9. Spring MVC 笔记2 HelloWorld
  10. python学习笔记--深拷贝与浅拷贝的区别