码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2020-06-15 14:19:14      阅读:66      评论:0      收藏:0      [点我收藏+]

标签:copy   ring   font   ==   sel   ext   zone   pyw   none   

实现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

 

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

标签:copy   ring   font   ==   sel   ext   zone   pyw   none   

原文地址:https://www.cnblogs.com/1-434/p/13130085.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!