zoukankan      html  css  js  c++  java
  • OC6_复合类的类存管理

    //
    //  Person.h
    //  OC6_复合类的类存管理
    //
    //  Created by zhangxueming on 15/6/18.
    //  Copyright (c) 2015年 zhangxueming. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    #import "Dog.h"
    
    @interface Person : NSObject
    
    @property (retain, nonatomic) Dog *dog;
    
    @end
    
    
    
    //
    //  Person.m
    //  OC6_复合类的类存管理
    //
    //  Created by zhangxueming on 15/6/18.
    //  Copyright (c) 2015年 zhangxueming. All rights reserved.
    //
    
    #import "Person.h"
    
    @implementation Person
    
    - (void)dealloc
    {
        NSLog(@"%@:dog is release", [self class]);
       [_dog release];
        [super dealloc];
    }
    
    
    @end
    //
    //  Dog.h
    //  OC6_复合类的类存管理
    //
    //  Created by zhangxueming on 15/6/18.
    //  Copyright (c) 2015年 zhangxueming. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    
    @interface Dog : NSObject
    
    @property (copy, nonatomic) NSString *name;
    @property (assign,nonatomic) NSInteger age;
    
    @end
    
    
    
    //
    //  Dog.m
    //  OC6_复合类的类存管理
    //
    //  Created by zhangxueming on 15/6/18.
    //  Copyright (c) 2015年 zhangxueming. All rights reserved.
    //
    
    #import "Dog.h"
    
    @implementation Dog
    
    - (void)dealloc
    {
        NSLog(@"%@: dog name is release!!!", [self class]);
        [_name release];
        [super dealloc];
    }
    
    @end
    //
    //  main.m
    //  OC6_复合类的类存管理
    //
    //  Created by zhangxueming on 15/6/18.
    //  Copyright (c) 2015年 zhangxueming. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    #import "Person.h"
    #import "Dog.h"
    
    int main(int argc, const char * argv[]) {
        @autoreleasepool {
            // insert code here...
            //NSLog(@"Hello, World!");
            Person *xiaoHua = [[Person alloc] init];
            Dog *xiaoHei = [[Dog alloc] init];
            xiaoHei.name = @"小黑";
            //setter方法
            xiaoHua.dog = xiaoHei ;    //  [xiaoHei retain]
            NSLog(@"%li----",xiaoHua.retainCount);
            NSLog(@"xiao%li----",xiaoHei.retainCount);
            
          Person *p =[xiaoHua retain];
          // NSLog(@"xiaohei%li----",xiaoHei.retainCount);
          // NSLog(@"tt%li----",p.retainCount);
           //[xiaoHua release];
            
            NSLog(@"最后%li----",xiaoHei.retainCount);
    
            [xiaoHei release];
        }
        return 0;
    }
  • 相关阅读:
    值得学习的C语言开源项目
    iOS – 使用UINib加载xib文件实现UITableViewCell
    iOS – 滚动视图(UIScrollView)详解
    oracle的体系结构之网络配置和登录验证(四)
    oracle的体系结构之存储结构(三)
    oracle的体系结构之权限管理和用户schema(二)
    oracle的体系结构之基本概念(一)
    C++ 闭包(closure)
    C++ Lambda 表达式
    C++ 类成员的构造和析构顺序
  • 原文地址:https://www.cnblogs.com/0515offer/p/4586956.html
Copyright © 2011-2022 走看看