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

来源:互联网 发布:日语输入法 知乎 编辑:程序博客网 时间:2024/06/16 04:27
  • 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
原创粉丝点击