strong vs copy
#import <UIKit/UIKit.h>@interface ViewController : UIViewController@property(nonatomic,strong) NSString *name;
@end
ViewController.m- (void)viewDidLoad {[super viewDidLoad];NSMutableString *myName = [NSMutableString stringWithString:@"zhangsan"];self.name = myName;NSLog(@"myName's address:%p",myName);NSLog(@"self.name's address:%p",self.name);
}
2015-07-21 16:38:50.911 Test[4369:2323491] myName's address:0x7967f4c0
2015-07-21 16:38:50.912 Test[4369:2323491] self.name's address:0x7967f4c0
@property(nonatomic,copy) NSString *name;
2015-07-21 16:40:09.938 Test[4394:2330879] myName's address:0x78deb9b0
2015-07-21 16:40:09.938 Test[4394:2330879] self.name's address:0x78dea270
在ARC情况下,如果源字符串是NSString时,由于字符串不可变,所以不管是strong还是copy属性的对象,都是指向源对象,copy只是进行了浅拷贝。
而如果源字符串是NSMutableString的话,strong是强引用,只是增加了源字符串的引用计数,而copy则是对源字符串进行了深拷贝,产生了一个新的对象,而且开辟了新的内存空间。此时如果我们修改源字符串的值,那么strong特性的字符串也会跟着修改,而copy的则不变。
* 大多情况下,建议使用copy,因为一般我们将对象声明为NSString时,都不希望它改变。
strong vs copy相关推荐
- strong、copy和mutableCopy详解
写在前面 关于copy.mutableCopy和strong,一直想好好整理整理,但是因为各种原因搁置了.今天上班时发现老代码中因为这个问题出现了一个特别恶心的大坑,让我下定决心写下这篇博文.如果你认 ...
- 关于@property()的那些属性及ARC简介【nonatomic,atomic,assign,retain,strong,weak,copy。】
@property()常用的属性有:nonatomic,atomic,assign,retain,strong,weak,copy. 其中atomic和nonatomic用来决定编译器生成的gette ...
- iOS strong和copy的区别
级别: ★☆☆☆☆ 标签:「iOS」「NSString」「strong和copy」 作者: MrLiuQ 在iOS开发中,几乎每天都会遇到NSString属性的声明, 在ARC内存管理机制下, NSS ...
- iOS学习笔记-retain/assign/strong/weak/copy/mutablecopy/autorelease区别
readwrite:是可读可写特性,需要生成getter和setter方法: readonly是之都特性,只会生成getter方法,不会生成setter方法,不希望属性在类外改变时候使用: alloc ...
- iOS开发-retain/assign/strong/weak/copy/mutablecopy/autorelease区别
依旧本着尊重原创和劳动者的原则,将地址先贴在前面: http://www.cnblogs.com/nonato/archive/2013/11/28/3447162.html,作者Nonato 以下内 ...
- NSString属性什么时候用copy,什么时候用strong?
我们在声明一个NSString属性时,对于其内存相关特性,通常有两种选择(基于ARC环境):strong与copy.那这两者有什么区别呢?什么时候该用strong,什么时候该用copy呢?让我们先来看 ...
- NSString属性什么时候用copy,什么时候用strong?【转】
转自:http://www.cocoachina.com/ios/20150512/11805.html. 我们在声明一个NSString属性时,对于其内存相关特性,通常有两种选择(基于ARC环境): ...
- @synthesize@dynamic@private,@protected,@publicassign、weak、strong、retain、copy、nonatomic、atomic
iOS属性修饰关键字 1. @private,@protected,@public,@package详解及使用 @privite:私有的,只有本类(不包括子类)自己拥有 @protected:受保护的 ...
- (0087)iOS开发之NSString属性为什么要用copy来修饰?
这个问题既是一个面试题,也是开发中经常遇到的问题,NSString 属性到底用copy 还是 strong ?其实如果明白的两者的区别也就不会疑惑了,其实都可以,只是如果你不明白两者的实质的区别,有可 ...
最新文章
- UICollectionView的使用方法
- 爬虫原理与数据抓取----- urllib2:URLError与HTTPError
- 一个ThreadLocal和面试官大战30个回合
- android系统的测试方法,运行测试 | Android 开源项目 | Android Open Source Project...
- ios之UIImageView
- golang跳转控制语句:goto语句示例
- IDEA开发中,类的头位置生成作者时间信息
- 测试Maven版本插件自动递增版本号
- 流行前沿的暗黑APP主题UI设计素材模板
- 《数字图像处理与机器视觉——Visual C++与Matlab实现》——0.1 数字图像
- natapp软件使用
- perl Data::Dumper和Storable的例子
- 8.3 单位矩阵和逆矩阵
- 快递取件码生成软件_一种快递柜取件码生成装置及其使用方法与流程
- CRC8 CRC16 查表法
- 黑视素照度(EML) Equivalent Melanopic Lux 计算工具
- mysql 5.166修改字符集_mysql字符集问题
- 致即将逝去的大二和写给就要到来的大三
- 达梦dsc搭建+dw
- js怎么实现对html代码加密解密,JS实现Base64加密解密