- (id)initWithName:(NSString *)name
age:(NSInteger)age
{
self = [super init];
if (self) {
self.name = name;
self.age = age;
self.arr = [NSMutableArray array];
}
return self;
}
- (void)dealloc
{
NSLog(@"对象被释放了");
[_name release];
[_hobby release];
[_girls release];
[super dealloc];
}
+ (Boy *)boy
{
Boy *b = [[Boy alloc] init];
return [b autorelease];
}
+ (Boy *)boyWithName:(NSString *)name
hobby:(NSString *)hobby
{
Boy *b = [[Boy alloc] initWithName:name hobby:hobby];
return [b autorelease];
}
- (id)copyWithZone:(NSZone *)zone
{
Boy *b = [Boy allocWithZone:zone];
b.hobby = self.hobby;
b.name = _name;
return b;
}
- (void)setHobby:(NSString *)hobby
{
if (_hobby != hobby) {
[_hobby release];
_hobby = [hobby retain];
}
[hobby retain];
[_hobby release];
_hobby = hobby;
}
Boy *boy = [[Boy alloc] init];
Girl *girl = [[Girl alloc] init];
NSLog(@"%ld", boy.retainCount);
[boy retain];
NSLog(@"%ld", boy.retainCount);
[boy release];
NSLog(@"%ld", boy.retainCount);
[boy release];
NSLog(@"%ld", boy.retainCount);
[boy release];
[boy dealloc];
NSArray *arr = @[@"1"];
NSLog(@"%ld", arr.retainCount);
NSString *str = @"1";
NSLog(@"%ld", str.retainCount);
NSLog(@"%p", str);
NSMutableString *str1 = [NSMutableString stringWithString:@"1"];
NSLog(@"%ld", str1.retainCount);
NSLog(@"%p", str1);
NSDictionary *dic = @{@"1": @"2"};
NSLog(@"%ld", dic.retainCount);
NSLog(@"%ld", str1.retainCount);
@autoreleasepool {
[boy autorelease];
NSLog(@"%ld", boy.retainCount);
}
NSLog(@"%ld", boy.retainCount);
Boy *boy1 = [Boy boy];
[boy1 retain];
NSLog(@"%ld", boy1.retainCount);
[boy1 release];
NSArray *arr1 = [[NSArray alloc] initWithObjects:@"1", @"2", nil];
[arr1 release];
NSArray *arr2 = [NSArray arrayWithObjects:@"1", @"2", @"3", @"4", nil];
NSLog(@"%ld", arr2.retainCount);
@interface Boy : NSObject<GirlDelegate, NSCopying>
NSArray *newArr = [arr2 copy];
NSLog(@"%@", newArr);
NSLog(@"%ld", newArr.retainCount);
NSMutableArray *newArr2 = [arr2 mutableCopy];
[newArr2 addObject:@"5"];
NSLog(@"%@", newArr2);
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"2", @"1", @"4", @"3", nil];
NSMutableDictionary *muDic = [dic mutableCopy];
NSLog(@"%@", muDic);
Boy *boy = [Boy boyWithName:@"张阳阳" hobby:@"玩"];
Boy *newBoy = [boy copy];
NSLog(@"%@", newBoy.name);
Boy *boy1 = [[Boy alloc] init];
[boy1 retain];
[boy1 retain];
NSLog(@"%ld", boy1.retainCount);
NSMutableArray *arr = [NSMutableArray arrayWithObjects:boy1, nil];
NSLog(@"%ld", [arr[0] retainCount]);
[arr removeObjectAtIndex:0];
NSLog(@"%ld", boy1.retainCount);