【非凡程序员】内存管理练习记录

对于 内存管理的练习

练习一:
#import <Foundation/Foundation.h>
#import "person.h"
//#import "watermelon.h"
#import "Car.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {       
        /*---------------多人多车----------------*/
        //人
        person *jabez = [[person alloc]init];
        [jabez setName:@"jabez"];
        person *sj= [[person alloc]init];
        [sj setName:@"songjiang"];
        person *glx = [[person alloc]init];
        [glx setName:@"gaolingxia"];
        person *xj= [[person alloc]init];
        [xj setName:@"xiejun"];

        //车
       
        Car *BYD=[[Car alloc]init];
        [BYD setName:@"比亚迪"];
       
        Car *FT=[[Car alloc]init];
        [FT setName:@"丰田"];

        //--------每个人都有BYD-----
       
        [jabez setCars:BYD];
        [sj setCars:BYD];
        [glx setCars:BYD];
        [xj setCars:BYD];
      
        [xj setCars:FT];
        [jabez setCars:FT];
        [glx setCars:FT];
        [sj setCars:FT];
        NSLog(@"人xj计数:-----%ld",[xj retainCount]);
        NSLog(@"汽车byd计数器----%ld",[BYD retainCount]);
        NSLog(@"汽车ft计数器----%ld",[FT retainCount]);

        [glx release];
        glx=nil;
        [xj release];
        xj=nil;
        [jabez release];
        jabez=nil;
        [sj release];
        sj=nil;
       
        [BYD release];
       
        NSLog(@"汽车byd计数器----%ld",[BYD retainCount]);
        NSLog(@"汽车ft计数器----%ld",[FT retainCount]);

       
       
     }
    return 0;
}


在person.h

#import <Foundation/Foundation.h>
//#import "watermelon.h"
#import "Car.h"


@interface person : NSObject


@property (nonatomic ,retain)Car *cars;
@property (nonatomic, assign)NSString *name;

 

@end


在preson.m

#import "person.h"
@implementation person
- (void) dealloc//内置函数,在子类重写时要调用父类。
{
  
    [_cars release];
    NSLog(@"人%@被释放",_name);
   
    [super dealloc];
}
- (void)setPerson:(Car *)car//与@property 差异,除了判断句其他相同

{
    if(_cars!=car)
    {
        [_cars release];
        _cars=[car retain];
     
    }

}

@end

在car.h
#import <Foundation/Foundation.h>

@interface Car : NSObject
@property (nonatomic, assign)NSString *name;


@end


在car.m中

#import "Car.h"

@implementation Car
- (void) dealloc
{
    NSLog(@"对象  %@car 被释放",_name);
   
    [super dealloc];
}

@end

 值得注意:

@class与import
@class只用在接口,只引入类,不能引用实现的相关文件

  练习二:


 /*------------------微博转发-----------------------*/
        person *per1 = [[person alloc]init];
        person *per2 = [[person alloc]init];
        [per1 setName:@"发的人"];
        [per2 setName:@"转发人"];
       
        [per1 setAge:12];
        [per2 setAge:22];
       
        [per1 setBirthday:@"1992-12-25"];
        [per2 setBirthday:@"2000-1-3"];
       
        [per1 setPhoto:@"photo1"];
        [per2 setPhoto:@"photo2"];
       
        [per1 setSex:@"女" ];
        [per2 setSex:@"女"];
       
        [per1 setSign:@"今天不开森"];
        [per2 setSign:@"HAPPY   "];
        
                
        weibo *arti=[[weibo alloc]init];
       
        [arti setID:123];
        [arti setContest:@"阴雨连绵"];
        [arti setDate:@"2015-05-21"];
        [arti setFronPerson:per1];
        [arti setTitle:@"today"];
        [arti setRelayPerson:per2];
        
                NSLog(@"%@,在%@,发了%@,并于被转发",[per1 name],[arti date],[arti contest]);


//
//  weibo.h
//  ARC
//
//  Created by 非凡程序员 on 15/5/21.
//  Copyright (c) 2015年 非凡程序员. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface weibo : NSObject

@property(nonatomic, assign)  int ID;

@property(nonatomic, weak)  NSString *contest;
@property(nonatomic, weak)  NSString *title;

@property(nonatomic, weak)  person *fronPerson;
@property(nonatomic, weak)  NSString *date;

@property(nonatomic, weak)  person *relayPerson;

 

@end

 


//
//  weibo.m
//  ARC
//
//  Created by 非凡程序员 on 15/5/21.
//  Copyright (c) 2015年 非凡程序员. All rights reserved.
//

#import "weibo.h"

@implementation weibo
- (void)dealloc

{
    NSLog(@"weibo被释放");
   
}

@end

 

//
//  person.h
//  ARC
//
//  Created by 非凡程序员 on 15/5/21.
//  Copyright (c) 2015年 非凡程序员. All rights reserved.
//

#import <Foundation/Foundation.h>
//@class watermelon;
@class weibo;
@interface person : NSObject


@property(nonatomic, weak)  NSString *name;
@property(nonatomic, assign)int age;
@property(nonatomic, weak)  NSString *sex;

@property(nonatomic, weak)  NSString *birthday;
@property(nonatomic, weak)  NSString *photo;
@property(nonatomic, weak)  NSString *sign;
@property(nonatomic, strong) weibo *weibo;

 

//@property (nonatomic, strong)watermelon *Personmelon;
@end

 

//
//  person.m
//  ARC
//
//  Created by 非凡程序员 on 15/5/21.
//  Copyright (c) 2015年 非凡程序员. All rights reserved.
//

#import "person.h"

@implementation person
- (void)dealloc

{
    NSLog(@"%@对象被释放",_name);
   
}

 


@end

 

你可能感兴趣的:(非凡程序员)