如何令自己所写的对象具有拷贝功能

.h
#import <Foundation/Foundation.h>

@interface Person : NSObject<NSCopying>

@property (nonatomic, assign) NSInteger age;

@property (nonatomic, copy) NSString *name;

@end
.m
#import "Person.h"

@implementation Person

- (id)copyWithZone:(NSZone *)zone {
    
    Person *person = [[[self class] allocWithZone:zone] init];
    person.age = self.age;
    person.name = self.name;
    
    return person;
}

@end
调用
Person *person = [[Person alloc] init];
    person.age = 10;
    person.name = @"name";
    
    Person *person1 = [person copy];
    person1.age = 11;
    person1.name = @"name1";
    NSLog(@"person.age==%ld", person.age);//person.age==10
    NSLog(@"person.name==%@", person.name);//person.name==name
    NSLog(@"person1.age==%ld", person1.age);//person1.age==11
    NSLog(@"person1.name==%@", person1.name);//person1.name==name1
    
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 整个《面试题》都是对[2017年6月iOS招人心得(附面试题)]的整理 实现NSCoping协议。如果自定义的对象...
    豆丶浆油条阅读 7,184评论 0 2
  • 刚听到这个主题时,我也迷惑:自己夸自己?好象在我们从小接受的教育里,都是:‘谦虚使人进步!’‘行事谦虚谨慎!...
    雪心168阅读 2,910评论 10 7
  • 数据库(database):是一个以某种有组织的方式存储的数据集合。最简单的方法是将数据库想象为一个文件柜。 SE...
    Mg明明就是你阅读 5,022评论 0 1
  • 既然念念不忘,不如好好安放。 ——致亲爱的自己 一 20年前的那个早上突然跳脱出尘封的记忆,毫无征兆。每个细节都那...
    ququer2419阅读 3,106评论 2 5