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;
    }
    

      

  • 相关阅读:
    test
    在linux下安装tesseract-ocr
    xpath获取同级节点
    RobotFrameWork系统关键字之断言
    redis
    mybatis
    mysql事务隔离级别
    努力努力再努力
    不同分辨率下,页面如何自适应?
    市场上有多少种分辨率?
  • 原文地址:https://www.cnblogs.com/ymonke/p/3237880.html
Copyright © 2011-2022 走看看