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

Posted 1-434

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了🔥🔥如何令自己所写的对象具有拷贝功能?相关的知识,希望对你有一定的参考价值。

实现NSCoping协议。如果自定义的对象分为可变版本与不可变版本,那么就要同时实现 NSCopying与 NSMutableCopying协议。
@protocol NSCopying

- (id)copyWithZone:(nullable NSZone *)zone;

@end

@protocol NSMutableCopying

- (id)mutableCopyWithZone:(nullable NSZone *)zone;

@end

、、、、、、、、、、
、、、、、、、、、、
.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

 

以上是关于🔥🔥如何令自己所写的对象具有拷贝功能?的主要内容,如果未能解决你的问题,请参考以下文章

🔥🔥iOS中解决NSTimer循环引用问题

🔥isKindOfClass 和 isMemberOfClass

🔥🔥谈谈 iOS 中图片的解压缩

🔥🔥造成循环引用和内存泄漏的几种情况

Git入门图文教程(1.5W字40图)🔥🔥--深入浅出图文并茂

🔥UIViewController的生命周期