zoukankan      html  css  js  c++  java
  • 深拷贝浅拷贝

    所谓的深拷贝和浅拷贝只有指针才存在这样的概念。

    .h文件 Person类

    #import <Foundation/Foundation.h>
    
    @interface Person : NSObject<NSCopying>
    {
        int age;
        NSString *name;
    }
    
    @property(nonatomic,assign) int age;
    @property(nonatomic,retain) NSString *name;
    
    @end
    

    .m文件

    #import "Person.h"
    
    @implementation Person
    
    @synthesize age;
    @synthesize name;
    
    - (id)init
    {
        self = [super init];
        if (self) {
            self.age=20;
            self.name=@"xiaoming";
        }
        return self;
    }
    
    - (void)dealloc
    {
        [name release];
        [super dealloc];
    }
    
    -(id)copyWithZone:(NSZone *)zone
    {
        Person *p=[[Person alloc]init];
        
        p.age= self.age;
    //    p.name=self.name;             //浅拷贝
     
        p.name=[self.name copy];    //深拷贝
        
        return p;
    }
    @end
    

    主函数

    #import <Foundation/Foundation.h>
    #import "Person.h"
    
    int main(int argc, const char * argv[])
    {
    
        @autoreleasepool {
            Person *per=[[Person alloc]init];
            NSLog(@"%d,%@",per.age,per.name);
            
            NSMutableString *str=[NSMutableString stringWithFormat:@"xiaoming"];
            per.name=str;
            per.age=21;
            NSLog(@"%d,%@",per.age,per.name);
            
            Person *per2=[[Person alloc]init];
            per2=[per copy];
            NSLog(@"%d,%@",per2.age,per2.name);
    
            [str appendString:@"2"];
            NSLog(@"%d,%@",per.age,per.name);
            NSLog(@"%d,%@",per2.age,per2.name);
            
            [per release];
            [per2 release];
    
    
        }
        return 0;
    }
    

      

  • 相关阅读:
    [ Virtuoso ] 增加自定义 Layer 需要做哪些事?
    [ ENV ] 记录一些自己比较喜欢的初始化语句
    [ SVRF ] 学习笔记
    [ Skill ] 键位不够用之 右键 Menu
    ubuntu创建桌面快捷方式
    git常用命令
    架设Git服务器
    Linux下安装redis
    mysql查询语句
    mysql数据库基本操作
  • 原文地址:https://www.cnblogs.com/ymonke/p/3237880.html
Copyright © 2011-2022 走看看