//
// main.m
// autoreleased的应用
#import <Foundation/Foundation.h>
#import "Person.h"
#import "GoodPerson.h"
/*
1.系统自带的方法里面没有包含alloc、new、copy,说明返回的对象都是autorelease的
2.开发中经常会提供一些类方法,快速创建一个已经autorelease过的对象
1> 创建对象时不要直接用类名,一般用self
+ (id)person
{
return [[[self alloc] init] autorelease];
}
*/
int main()
{
@autoreleasepool {
Person *p = [Person personWithAge:100];
GoodPerson *p2 = [GoodPerson personWithAge:10];
p2.money = 100;
}
return 0;
}
void test()
{
Person *p = [[Person alloc] init];
p.age = 200;
[p release];
// 包
// Student com.mj.test
// Student com.mj.test2
// MJStudent
// SBStudent
// Next Step
@autoreleasepool
{
// Person *p2 = [Person person];
//
// p2.age = 100;
Person *p2 = [Person personWithAge:100];
// Person *p2 = [[[Person alloc] init] autorelease];
//
// p2.age = 300;
NSString *str = @"123123";
NSString *str2 = [NSString stringWithFormat:@"age is %d", 10];
NSNumber *num = [[NSNumber alloc] initWithInt:10];
[num release];
NSNumber *num2 = [NSNumber numberWithInt:100];
}
}
/*
文件名:Person.h
*/
#import <Foundation/Foundation.h>
@interface Person : NSObject
@property (nonatomic, assign) int age;
+ (id)person;
+ (id)personWithAge:(int)age;
@end
/*
文件名:Person.m
*/
#import "Person.h"
@implementation Person
+ (id)person
{
return [[[self alloc] init] autorelease];
}
+ (id)personWithAge:(int)age
{
Person *p = [self person];
p.age = age;
return p;
}
- (void)dealloc
{
NSLog(@"%d岁的人被销毁了", _age);
[super dealloc];
}
@end
/*
文件名:GoodPerson.h
*/
#import "Person.h"
@interface GoodPerson : Person
@property (nonatomic, assign) int money;
@end
/*
文件名:GoodPerson.m
*/
#import "GoodPerson.h"
@implementation GoodPerson
@end