1.Boy.h文件
#import <Foundation/Foundation.h>
@interface Boy : NSObject<NSCopying>
@property(nonatomic,retain)NSMutableArray *arr;
@property(nonatomic,copy)NSString *name;
@property(nonatomic,assign)NSInteger age;
@property(nonatomic,retain)Girl *girl;
- (void)setName:(NSString *)name;
+ (Boy *)boy;
- (id)initWithName:(NSString *)name age:(NSInteger)age;
+ (id)boyWithName:(NSString *)name age:(NSInteger)age;
@end
2.Boy.m文件
#import "Boy.h"
@implementation Boy
+ (Boy *)boy
{
Boy *boy = [[Boy alloc] init];
return [boy autorelease];
}
- (id)initWithName:(NSString *)name age:(NSInteger)age
{
self = [super init];
if (self) {
self.name = name;
_age = age;
self.arr = [NSMutableArray array];
}
return self;
}
+ (id)boyWithName:(NSString *)name age:(NSInteger)age
{
Boy *boy = [[Boy alloc] initWithName:name age:age];
return [boy autorelease];
}
- (void)setName:(NSString *)name
{
if (_name != name) {
[_name release];
_name = [name retain];
}
}
-(id)copyWithZone:(NSZone *)zone
{
Boy *boy = [Boy allocWithZone:zone];
boy.name = _name;
boy.age = _age;
return boy;
}
- (void)dealloc
{
[_name release];
[_girl release];
[super dealloc];
}
@end
3.内存管理
Boy *boy = [[Boy alloc] init];
[boy retain];
[boy release];
[boy release];
NSString *str = @"heihei";
NSString *str = [[NSString alloc] initWithString:@"hehei"];
NSArray *arr1 = [[NSArray alloc] initWithObjects:@"1",@"2", nil];
NSArray *arr2 = [NSArray arrayWithObjects:@"3",@"4", nil];
[arr1 release];
Boy *boy = [Boy boyWithName:@"zhangyan" age:22];
Boy *newBoy = [boy copy];
Boy *boy1 = [[Boy alloc] init];
NSMutableArray *arr = [NSMutableArray arrayWithObjects:boy1 ,nil];
NSLog(@"%ld",[boy1 retainCount]);