口头村村怎么去啊,我要去那办事
答案:5 悬赏:0
解决时间 2021-03-25 20:11
- 提问者网友:溺爱和你
- 2021-03-24 22:55
iOS中深拷贝,浅拷贝和retain的区别
最佳答案
- 二级知识专家网友:不服输的倔强
- 2020-04-10 04:27
• copy: 用于希望保持一份传入值的拷贝,而不是值自身的情况,即把原来的对象完整的赋值到另外一地方,重新加载一内存区,一个地方变了不影响另一个地方的对象。
• assign: 简单的直接赋值,相当于说两个对象指向同个内存区,一个地方的变了,其他的也跟着改变。
• retain:释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数 为1
那上面的是什么意思呢?
Copy 其实是建立了一个相同的对象,而 retain 不是:
比如一个 NSString 对象,地址为 0×1111,内容为@”ABC”
Copy 到另外一个 NSString 之 后,地址为 0×2222,内容相同,新的对象 retain 为 1, 旧 有对象没有变化
retain 到另外一个 NSString 之 后,地址相同(建立一个指针,指针拷贝),内容当然相 同,这个对象的 retain 值+1
assign 地址还是0x1111,内容也还是“ABC”。
也就是说,retain 是指针拷贝,copy 是内容拷贝。
strong,weak 用来修饰属性。
strong 用来修饰强引用的属性;
@property (strong) SomeClass * aObject;
对应原来的
@property (retain) SomeClass * aObject; 和 @property (copy) SomeClass * aObject;
weak 用来修饰弱引用的属性;
@property (weak) SomeClass * aObject;
对应原来的
@property (assign) SomeClass * aObject;
• assign: 简单的直接赋值,相当于说两个对象指向同个内存区,一个地方的变了,其他的也跟着改变。
• retain:释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数 为1
那上面的是什么意思呢?
Copy 其实是建立了一个相同的对象,而 retain 不是:
比如一个 NSString 对象,地址为 0×1111,内容为@”ABC”
Copy 到另外一个 NSString 之 后,地址为 0×2222,内容相同,新的对象 retain 为 1, 旧 有对象没有变化
retain 到另外一个 NSString 之 后,地址相同(建立一个指针,指针拷贝),内容当然相 同,这个对象的 retain 值+1
assign 地址还是0x1111,内容也还是“ABC”。
也就是说,retain 是指针拷贝,copy 是内容拷贝。
strong,weak 用来修饰属性。
strong 用来修饰强引用的属性;
@property (strong) SomeClass * aObject;
对应原来的
@property (retain) SomeClass * aObject; 和 @property (copy) SomeClass * aObject;
weak 用来修饰弱引用的属性;
@property (weak) SomeClass * aObject;
对应原来的
@property (assign) SomeClass * aObject;
全部回答
- 1楼网友:如果这是命
- 2020-08-22 09:16
浅拷贝:浅拷贝是对object对象的指针拷贝,让指针指向同一块内存地址,“对象永远只有一个",浅拷贝使对象的引用计数器+1。代码如下:
可以看出不可变字符串的指针指向了同一地址,并没有重新开辟内存。
深拷贝:深拷贝是对object对象的复制,保留原对象的值,开辟新的内存地址。
如图中代码,声明一个可变数组,为WXDObject类添加一个用copy修饰的属性,在类的实现后将指针指向可变数组,打印两者的地址发现地址发生了变化。所以用copy修饰可变对象,将会进行深拷贝。
retain修饰:将上面array的修饰改为retain,对象引用计数器+1,指向同一地址,并没有重新开辟内存地址
- 2楼网友:恕我颓废
- 2019-09-04 01:11
开车去更方便一些吧。
- 3楼网友:随心随缘不随便
- 2020-03-01 07:15
腾讯地图也可以找到吧
- 4楼网友:糜废丧逼
- 2020-05-25 05:43
我查了下,口头村村的地址是在河北保定雄县大营镇口头村村委会
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯