objective-c复制
copy和 mutableCopy方法
copy方法总是返回对象的不可修改的副本,即使对象本身是可以修改的。 例如: 调用NSMutableString的copy方法,将会得到不可修改的字符串对象。
mutableCopy方法总是返回该对象的可以修改的副本,即使被复制的对象本身是不可修改的。 例如: 调用NSString的mutableCopy方法,将会得到NSMutableString。
copy和mutableCopy返回的总是原对象的副本,当程序对复制的副本就行修改时原对象通常不会受影响。
像使用copy方法要先在接口声明是实现NSCopying协议,然后在类实现中重写-(id)copyWithZone:(NSZone *)zone方法。
想使用mutableCopy方法要实现NSMutableCopying协议,然后在类中实现mutanleCopyWithZone方法。
例如:
@interface Copyyy : NSObject<NSCopying>
@property NSString* name;@end@implementation Copyyy-(id)copyWithZone:(NSZone *)zone{NSLog(@"复制ing");return self;
}@end
@implementation tttint main(int argc, const char * argv[]) {@autoreleasepool {Copyyy* ccc=[Copyyy new];ccc.name=@"xl";Copyyy*ccc2=[ccc copy];NSLog(@"%@",ccc2.name);}}@end
当然也可以不实现NSCopying协议,直接在实现中重写
-(id)copyWithZone:(NSZone *)zone
也可以
例如
#import "ttt.h"
#import <Foundation/Foundation.h>@interface Copyyy : NSObject // <NSCopying>
@property NSString* name;@end@implementation Copyyy-(id)copyWithZone:(NSZone *)zone{NSLog(@"复制ing");return self;
}@end
@implementation tttint main(int argc, const char * argv[]) {@autoreleasepool {Copyyy* ccc=[Copyyy new];ccc.name=@"xl";Copyyy*ccc2=[ccc copy];NSLog(@"%@",ccc2.name);}}@end
甚至不实现协议,不重写
-(id)copyWithZone:(NSZone *)zone
也可以
例如
#import "ttt.h"
#import <Foundation/Foundation.h>@interface Copyyy : NSObject // <NSCopying>
@property NSString* name;@end@implementation Copyyy//参数任意
-(id)copyWithZone:(NSObject *)zone{NSLog(@"复制ing");return self;
}
//-(id)copyWithZone:(NSData *)zone{
// NSLog(@"复制ing");
// return self;
//}@end
@implementation tttint main(int argc, const char * argv[]) {@autoreleasepool {Copyyy* ccc=[Copyyy new];ccc.name=@"xl";Copyyy*ccc2=[ccc copy];NSLog(@"%@",ccc2.name);}}@end
objective-c复制相关推荐
- 【iOS 开发】Objective-C 运算符
博客地址 : http://blog.csdn.net/shulianghan/article/details/41624613 参考文章 : 1.[iOS 开发]Object-C 运算符 2.[iO ...
- 睡眠排序法-objective C版的代码
将开发过程比较重要的代码做个珍藏,下面代码内容是关于睡眠排序法-objective C版的代码,应该能对各位朋友有帮助. @interface NSArray (SleepSort) - (void) ...
- 逻辑SQL Server数据复制101
介绍 (Introduction) Data replication has been around for many decades. There are two primary types of ...
- 10Redis--主从复制 非常重要、一主二仆、薪火相传、反客为主、哨兵模式
目录 主从复制 概念 主从复制的作用 为什么使用集群 环境配置 既然需要启动多个服务,就需要多个配置文件.每个配置文件对应修改以下信息: 启动 3 个redis集群 一主二从 命令方式 6379 ...
- 阿里云块存储企业级特性之异步复制
前言 数据是企业的生命线 数据异地容灾是企业级客户的一个普适需求,尤其是对于政府,金融等大客户,更是核心需求.在大数据时代,数据就是企业的核心资产,是企业的生命线.在现实世界中,灾难时有发生,当发生灾 ...
- linux vi编辑器中的复制粘贴快捷键
在使用vi有时会想直接复制一行数据,然后粘贴若干行进行修改 复制一行数据的方法 把光标放到要复制的一行前面,然后按两下yy字母键 yy # 复制光标所在的那一行 然后把光标放到要复制到的地方去,按键盘 ...
- Golang 元素值在经过通道传递时会被复制,这个复制是浅复制
1. channel 元素值为切片 package mainimport ("fmt" )func main() {ch := make(chan []int, 3)s := [] ...
- Linux shell 学习笔记(1)— 文件和目录(查看、创建、复制、软硬链接、重命名及删除操作)
1. 启动 shell /etc/passwd 文件包含了所有系统用户账户列表以及每个用户的基本配置信息: christine:x:501:501:Christine Bresnahan:/home/ ...
- 宿主机虚拟机文件复制 apt-get 换成yum
这两天重新装了VMware 14 Pro和Ubuntu18.04.1.在使用中,发现无法: 从Windows主机向虚拟机的Ubuntu系统中 复制粘贴文字或者拖动文件. 在查看了VMware的文档和其 ...
- C++ 复制构造函数或者拷贝构造函数
复制构造函数 是一种特殊的构造函数,它在创建对象时,是使用同一类中之前创建的对象来初始化新创建的对象. 复制构造函数通常用于: 通过使用另一个同类型的对象来初始化新创建的对象. 复制对象把它作为参数传 ...
最新文章
- (转)基于MVC4+EasyUI的Web开发框架形成之旅--界面控件的使用
- 全网最全的Postman接口自动化测试(小鸟成大鸟级攻略)
- python有道api-python 调用有道api接口的方法
- Windows11——Modern Standby(现代待机) S0改Suspend to RAM(待机到内存)S3睡眠解决方案
- [Swift]随slider变化而变化的圆
- linux文件夹重命名busy,Linux下执行程序出现 Text file busy 提示时的解决方法
- 分子机制研究的五个层次,你的研究在哪个层次--转载
- Redis的安装与常用配置说明
- layui 图片展示添加一个x_Layx 演示示例
- 电脑ping_电脑网络故障检测与维护—常用DOS命令
- Lesson 17.2 经典数据集(1):入门数据集,以及读数据时哪些可能的坑
- 求传递闭包c语言具体编程,实验一_传递闭包的实现.doc
- 动态更换 Shape 的颜色
- TensorFlow案例---概率学中的逆概率
- vue前端项目基于淘宝lib-flexible做手机端适配
- 2012新年寄语——感谢有您
- Windows 程序设计
- 用意念打字,中国脑机接口新纪录诞生!
- 基于Arduino的水位检测系统
- 百度搜霸卸载全攻略〔原创〕