ios-原型模式(克隆)

83 阅读1分钟
  • 定义一个模型类遵守NSCopying 协议,重写copyWithZone方法
#import <Foundation/Foundation.h>

@interface DDCommand : NSObject<NSCopying>

@property (copy, nonatomic) NSString *text;
@end

#import "DDCommand.h"

@implementation DDCommand

- (id)copyWithZone:(NSZone *)zone {
    DDCommand *command = [[[self class]allocWithZone:zone]init];
    command.text = _text;
    return command;
}

@end

  • 调用
DDCommand *command = [[DDCommand alloc]init];
command.text = @"A";

DDCommand *command1 = [command copy];

  • 完成了一次深拷贝
  • 使用场景可以是 一个值传递到下一个页面完成操作后返回与原先值做比较。