首页 > 代码库 > Objective-C语法之copy和mutablecopy
Objective-C语法之copy和mutablecopy
#pragma mark 演示字符串的copy//深拷贝--对象拷贝--内容拷贝(产生新对象)新对象计数器+1,原对象不变void stringmutableCopy(){ //string = 1 NSString *string = [[NSString alloc]initWithFormat:@"age is %i", 10]; //str = 1 //产生了一个新对象,原对象的计数器不变 NSMutableString *str = [string mutableCopy]; NSLog(@"str:%zi",[string retainCount]); NSLog(@"string:%zi",[str retainCount]); //修改副本,原对象不变 [str appendString:@"abcd"]; NSLog(@"string:%@",string); NSLog(@"str:%@",str); //string =0 [string release]; [str release];//copy也需要release}//不可变拷不可变--浅拷贝//浅拷贝--指针拷贝--地址拷贝 (拷贝指针,不会产生新的对象,返回原对象本身,原对象计数器+1)void stringcopy(){ NSString *string = [[NSString alloc]initWithFormat:@"age is %i", 10]; //为了性能着想,针对copy原则,string本来是不可变,[string copy]并没有产生一个新的对象,而是返回对象本身,copy相当与retain NSString *str = [string copy];//产生一个不可变对象 //NSLog(@"%i", string == str);//结果为1,copy出来的对象为同一个 NSLog(@"%zi",[string retainCount]); NSLog(@"%zi",[str retainCount]); [string release]; [str release];//使用copy或者mutablecopy都需要release}#pragma mark 可变字符串的copy//深拷贝void mutableStringCopy(){ NSMutableString *string = [NSMutableString stringWithFormat:@"age is %i",10]; NSString *str = [string copy];//产生一个不可变的str [str release];}//深拷贝void mutableStringmutableCopy(){ NSMutableString *string = [NSMutableString stringWithFormat:@"age is %i",10]; //会产生一个新的对象 NSMutableString *str = [string mutableCopy]; [str appendString:@"1234"]; NSLog(@"str:%@",str); NSLog(@"string%@",string); [str release]; }
Objective-C语法之copy和mutablecopy
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。