ios基础之一天一道笔试题(2)

请写出程序执行后的打印结果:

@property (nonatomic, strong) NSString *aStrongString;
@property (nonatomic, copy) NSString *aCopyString;

代码1:

NSString *string = @"Hello";
self.aCopyString = string;
self.aStrongString = string;
mString = @"Hello  World"
NSLog(@"aCopyString is :%@ \r\n aStrongString is :%@",self.aCopyString,self.aStrongString);

代码2:

NSMutableString *mString = [[NSMutableString alloc] initWithString:@"Hello"];
self.aCopyString = mString;
self.aStrongString = mString;
[mString appendFormat:@"\t%@",@"World"]; 
NSLog(@"%@,%@",self.aCopyString,self.aStrongString);

代码1打印结果:Hello, Hello,
代码1打印结果:Hello, Hello World
解析:
本题主要考察strong和copy属性修饰的区别以及深拷贝和浅拷贝:
1)当string是不可变对象时,copy是浅拷贝,会增加string的引用计数,只拷贝指针对象,指向string指向的地址,strong则是强引用string对象,增加string的引用计数,指向string指向的地址,当string的值发生改变时其指向的地址会发生改变,copy和strong修饰的对象指向的地址不会发生改变
2)当string是可变对象时,copy是深拷贝,此时只会拷贝string的值,拷贝出来的对象是不可变对象,指向新的地址,不增加string的引用计数,strong则是强引用string对象,增加string的引用计数,指向string指向的地址,当string的值发生改变,指向的地址不会发生改变,copy修饰的对象值不会发生改变,而strong修饰的对象值会发生改变

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,817评论 1 32
  • ———————————————回答好下面的足够了---------------------------------...
    恒爱DE问候阅读 1,855评论 0 4
  • 多线程、特别是NSOperation 和 GCD 的内部原理。运行时机制的原理和运用场景。SDWebImage的原...
    LZM轮回阅读 2,153评论 0 12
  • 月明星稀,夜深人静,此刻的你还好吗? 此刻的你睡了吗? 或许,此刻的你和我一样难以入睡。 月亮向大地撒下皎洁的月光...
    你大概都不知道的事阅读 378评论 0 0
  • 烟波浩淼的东太湖,湖中有岛,山清水秀,风光迤逦。一级空气,二级水,让生活在这里的人们幸福指数特别高。 ...
    汾湖秀阅读 1,784评论 19 7

友情链接更多精彩内容