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

      

  • 相关阅读:
    报表打印
    MyGridControl
    用户控件制作时设计模式加载报错的解决办法
    代码生成工具
    上传控件的使用
    数据加密
    DevExpress介绍
    记一次手动安装pecl扩展memcache
    关于httpd.conf的一点随笔
    temp
  • 原文地址:https://www.cnblogs.com/ymonke/p/3237880.html
Copyright © 2011-2022 走看看