18 对象的copy与mutableCopy方法
来源:互联网 发布:ps cs6 for mac序列号 编辑:程序博客网 时间:2024/06/05 13:09
18 对象的copy与mutableCopy方法
Tags: Objective-C
- copy方法:copy方法用来复制对象,产生一个不可变副本,不论对象本身是可变的还是不可变的,用copy方法产生的副本都是不可变的副本。比如调用NSMutableString对象的copy方法产生的对象是NSString对象。
- mutableCopy方法:mutableCopy方法用来复制对象,产生一个可变副本,不论对象本身是可变的还是不可变的,用mutableCopy方法产生的副本都是可变的副本。比如调用NSString对象的mutableCopy方法产生的对象是NSMutableString对象。
下面是代码示例:
CopyTest.m
#import <Foundation/Foundation.h>int main(int argc, const char * argv[]) { @autoreleasepool { NSMutableString *book = [NSMutableString stringWithString:@"iOS编程"]; //复制book的可变副本 NSMutableString *bookCopy = [book mutableCopy]; //修改可变副本,原始book不受影响 [bookCopy replaceCharactersInRange:NSMakeRange(0, 3) withString:@"Android"]; NSLog(@"book的值为:%@", book); NSLog(@"bookCopy的值为:%@", bookCopy); NSString *str = @"gkh"; //复制不可变字符串的可变副本 NSMutableString *strCopy = [str mutableCopy]; //向可变副本追加字符串 [strCopy appendString:@".org"]; NSLog(@"str的值为:%@", str); NSLog(@"strCopy的值为:%@", strCopy); //复制可变字符串的的不可变副本 NSMutableString *bookCopy2 = [book copy]; [bookCopy2 appendString:@"abcde"];//运行会产生异常,因为bookCopy2是不可变的 } return 0;}
运行结果如下:
book的值为:iOS编程
bookCopy的值为:Android编程
str的值为:gkh
strCopy的值为:gkh.org
*** Terminating app due to uncaught exception ‘NSInvalidArgumentException’, reason: ‘Attempt to mutate immutable object with appendString:’
0 0
- 18 对象的copy与mutableCopy方法
- 对象复制copy与mutableCopy方法的区别
- 对象的copy&mutableCopy
- 对象的copy&mutableCopy
- 对象拷贝copy与mutableCopy
- NSString 的copy 与 mutableCopy
- 深入对象的copy和mutableCopy
- OC的copy与mutableCopy剖析(mutableCopy篇)
- ObjecC 中copy与mutableCopy的说明
- mutableCopy与COPY区别
- MutableCopy 与 Copy
- copy与mutableCopy-----笔记
- copy 与 mutablecopy
- mutableCopy与COPY区别
- ios copy 与 mutablecopy
- iOS copy与mutableCopy
- 16.copy与mutableCopy
- copy与mutableCopy
- UVALive 6926Maximum Score(组合数学)
- 14 反射
- 15 手动内存管理
- 16 Foudation框架之NSString和NSMutableString
- 17 Foundation框架之NSDate、NSDateFormatter、NSDateComponents、NSCalendar、NSLocale、NSTimer
- 18 对象的copy与mutableCopy方法
- 19 NSCopying与NSMutableCopying协议+深复制和浅复制
- Java --- 就业指导
- Github的使用
- 广播
- ScrollView代理和NSTimer
- Easy题目总结
- UVa 12657 Boxes in a Line(双向链表的应用)
- jquerymobile动态添加元素之后不能正确渲染解决方法