蓝鸥iOS从零基础到精通就业-OC语言入门 对象内存管理3

  • iOS从零基础到精通就业 Objective-C

  • CSDN观看地址:http://edu.csdn.net/course/detail/3347
  • 对象内存管理
  • #import <Foundation/Foundation.h>
    #import "Car.h"
    #import "Person.h"
    
    int main(int argc, const char * argv[]) {
       
        Person *p = [[Person alloc] init];
        Car *c1 = [[Car alloc] init];
        [c1 setPrice:30000.0];
        
        //把车给这个人
        [p setCar:c1];//当人拥有这辆车的时候要进行引用计数+1
        
        //人赚了钱了
        Car *c2 = [[Car alloc] init];
        [c2 setPrice:500000.0];
        
        //换车
        [p setCar:c2];
        
        [c1 release];
        [c2 release];
        [p release];//当人死的时候要对他拥有的车引用计数-1
        
        //copy
        //不可变数组 用不可变copy相当于retain
        //没有开辟新内存 只是引用计数增加了 叫浅拷贝
        NSArray *array = [NSArray arrayWithObjects:@"张飞", nil];
        NSArray *array1 = [array copy];//等同于retain
        NSLog(@"%p  %p",array,array1);
        NSLog(@"%ld  %ld",[array retainCount],[array1 retainCount]);
        
        
        //不可变数组 用可变copy
        //开辟新内存  叫深拷贝
        NSArray *array2 = [NSArray arrayWithObjects:@"关云长", nil];
        NSArray *array3 = [array2 mutableCopy];
        //copy出来的结果是可变的还是不可变的??????
        NSLog(@"--->>%@",[array3 class]);
        NSLog(@"%p  %p",array2,array3);
        NSLog(@"%ld  %ld",[array2 retainCount],[array3 retainCount]);
        
        //可变数组用不可变copy
        NSMutableArray *arr1 = [NSMutableArray arrayWithObjects:@"刘备", nil];
        NSMutableArray *arr2 = [arr1 copy];
        NSLog(@"%p  %p",arr1,arr2);
        NSLog(@"%ld  %ld",[arr1 retainCount],[arr2 retainCount]);
        
        //可变数组用可变copy
        NSMutableArray *arr3 = [NSMutableArray arrayWithObjects:@"刘备", nil];
        NSMutableArray *arr4 = [arr1 mutableCopy];
        NSLog(@"%p  %p",arr3,arr4);
        NSLog(@"%ld  %ld",[arr3 retainCount],[arr4 retainCount]);
        
        
        //ARC自动引用计数  不需要管理内存 通常用strong来代替retain
        
        return 0;
    }
    
    


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值