黑马程序员——OC语言加强---copy概念及入门
2015-10-07 11:23
561 查看
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
copy概念及入门
1、对象copy的概念
1)什么是copy
Copy的字面意思是“复制”、“拷贝”,是一个产生副本的过程;
对象拷贝的目的:要使用某个对象的数据,但是在修改对象的时候不影响原来的对象内容。
常见的复制有用一个源文件产生:文件复制;
作用:利一个副本文件;
2)特点:
修改源文件的内容,不会影响副本文件;
修改副本文件的内容,不会影响源文件;
OC中的copy,就是指的对象的拷贝;
作用:利用一个源对象产生一个副本对象
修改源对象的属性和行为,不会影响副本对象
修改副本对象的属性和行为,不会影响源对象
3)如何使用copy功能
一个对象可以调用copy或mutableCopy方法来创建一个副本对象
copy: 创建的是不可变副本(如NSString、NSArray、NSDictionary)
mutableCopy:创建的是可变副本(如NSMutableString、NSMutableArray、NSMutableDictionary)
4)使用copy功能的前提
copy : 需要遵守NSCopying协议,实现copyWithZone:方法
@protocol NSCopying
- (id)copyWithZone:(NSZone *)zone;
@end
mutableCopy : 需要遵守NSMutableCopying协议,实现mutableCopyWithZone:方法
@protocol NSMutableCopying
- (id)mutableCopyWithZone:(NSZone *)zone;
@end
2、copy快速入门
以NSString字符串为例,进行copy 和 mutableCopy 演示
copy就是浅复制,因为没有产生新的对象(有没有产生新的对象也是判断深浅复制的标准) 此处的copy 后产生还是不可变的字符串
copy概念及入门
1、对象copy的概念
1)什么是copy
Copy的字面意思是“复制”、“拷贝”,是一个产生副本的过程;
对象拷贝的目的:要使用某个对象的数据,但是在修改对象的时候不影响原来的对象内容。
常见的复制有用一个源文件产生:文件复制;
作用:利一个副本文件;
2)特点:
修改源文件的内容,不会影响副本文件;
修改副本文件的内容,不会影响源文件;
OC中的copy,就是指的对象的拷贝;
作用:利用一个源对象产生一个副本对象
修改源对象的属性和行为,不会影响副本对象
修改副本对象的属性和行为,不会影响源对象
3)如何使用copy功能
一个对象可以调用copy或mutableCopy方法来创建一个副本对象
copy: 创建的是不可变副本(如NSString、NSArray、NSDictionary)
mutableCopy:创建的是可变副本(如NSMutableString、NSMutableArray、NSMutableDictionary)
4)使用copy功能的前提
copy : 需要遵守NSCopying协议,实现copyWithZone:方法
@protocol NSCopying
- (id)copyWithZone:(NSZone *)zone;
@end
mutableCopy : 需要遵守NSMutableCopying协议,实现mutableCopyWithZone:方法
@protocol NSMutableCopying
- (id)mutableCopyWithZone:(NSZone *)zone;
@end
2、copy快速入门
以NSString字符串为例,进行copy 和 mutableCopy 演示
copy就是浅复制,因为没有产生新的对象(有没有产生新的对象也是判断深浅复制的标准) 此处的copy 后产生还是不可变的字符串
#import <Foundation/Foundation.h> @interface Dog : NSObject @end @implementation Dog @end int main(int argc, const char * argv[]) { @autoreleasepool { Dog *d = [Dog new]; //目的: // d拷贝一份,给byd Dog *byd = [d copy]; } return 0; }
相关文章推荐
- Objective-C的内省(Introspection)用法小结
- Objective-C中常用的结构体NSRange,NSPoint,NSSize(CGSize),NSRect实例分析
- Objective-C中NSNumber与NSDictionary的用法简介
- Objective-C中NSLog输出格式大全
- Swift调用Objective-C编写的API实例
- Swift、Objective-C、Cocoa混合编程设置指南
- Objective-c代码如何移植为Swift代码 Objective-c代码转移到Swift过程介绍
- Swift调用Objective-C代码
- 以实例讲解Objective-C中的KVO与KVC机制
- objective-c中生成随机数的方法
- 在Swift中使用Objective-C编写类、继承Objective-C类
- Swift能代替Objective-C吗?
- Objective-C 消息传递机制详解
- 在一个项目中同时使用Swift和Objective-C代码混合编程的方法
- vm安装mac os x 10.7 lion
- objective-c(一)
- objective-c(二)
- objective-c(三)
- objective-c(四)-基本数据类型以及循环和选择结构