博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NSCopying简析
阅读量:4576 次
发布时间:2019-06-08

本文共 1766 字,大约阅读时间需要 5 分钟。

NSCopying简析

用到NSCopying的时候并不多,但还是有必要知道最基本的用途,比方说数组的拷贝操作,需要注意的是,数组的拷贝操作并不是执行了 copy 方法,而是需要执行 initWithArray:copyItems: ,这点需要注意.

源码:

////  Model.h//  NSCopy////  Created by YouXianMing on 15/5/2.//  Copyright (c) 2015年 YouXianMing. All rights reserved.//#import 
@interface Model : NSObject
// 对象类型@property (nonatomic, strong) NSString *name;@property (nonatomic, strong) NSNumber *age;// 基本数据类型@property (nonatomic, assign) BOOL isMale;@end
////  Model.m//  NSCopy////  Created by YouXianMing on 15/5/2.//  Copyright (c) 2015年 YouXianMing. All rights reserved.//#import "Model.h"@implementation Model- (id)copyWithZone:(NSZone *)zone {        // 获取拷贝内容    Model *copy = [[[self class] allocWithZone:zone] init];        // 基本属性的类型本身实现了copy协议    copy.name = [_name copy];    copy.age  = [_age  copy];        // 常规类型属性仅仅需要赋值即可    copy.isMale = _isMale;        return copy;}@end

控制器源码:

////  ViewController.m//  NSCopy////  Created by YouXianMing on 15/5/2.//  Copyright (c) 2015年 YouXianMing. All rights reserved.//#import "ViewController.h"#import "Model.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad {    [super viewDidLoad];    // 对象1    Model *modelOne = [Model new];    modelOne.name   = @"YouXianMing";    modelOne.age    = @(28);            // 对象1的复制    Model *modelCopy = [modelOne copy];            // 打印信息    NSLog(@"%@ %@", modelOne, modelOne.name);    NSLog(@"%@ %@", modelCopy, modelCopy.name);            // 数组    NSArray *array = @[modelOne, modelCopy];            // 数组的复制    NSArray *arrayCopy = [[NSArray alloc] initWithArray:array copyItems:YES];            // 打印信息    NSLog(@"%@", array);    NSLog(@"%@", arrayCopy);}@end

简单的分析:

 

转载于:https://www.cnblogs.com/YouXianMing/p/4472452.html

你可能感兴趣的文章
ZT:Unity与C++之间进行socket通信
查看>>
Ural 1517. Freedom of Choice 后缀数组
查看>>
【转载】Maven入门实践
查看>>
1-4-03:奇偶数判断
查看>>
【SQL Server备份恢复】提高SQL Server备份速度
查看>>
命令行简介(附加参考资料)
查看>>
从0开始整合SSM框架-1.mybatis
查看>>
移位操作的疑问
查看>>
UILabel常用属性小结
查看>>
gitlab 邮件服务器配置
查看>>
Python 循环语句(while, for)
查看>>
深入理解JavaScript原型链
查看>>
LinearGradient类来实现图片的渐变效果
查看>>
Golang关键字—— if/else
查看>>
数据清洗
查看>>
PHP&MySQL(三)——数组
查看>>
各种语法解释及用法
查看>>
GPS.NET 和 GeoFramework开源了
查看>>
汇编:采用址表的方法编写程序实现C程序的switch功能
查看>>
AtiveMQ初次连接的 http error:503 连接错误 Prolem accessing /.Reason : Service Unavailable...
查看>>