首页 > 试题广场 >

关于Objective-C中属性的说明,以下错误的是()

[单选题]
关于Objective-C中属性的说明,以下错误的是()
  • readwrite是可读可写特性,需要生成getter方法和setter方法
  • readonly是只读特性,只有getter方法,没有setter方法
  • assign是赋值属性,setter方法将传入参数赋值给实例变量
  • retain表示持有特性,copy属性表示拷贝属性,都会建立一个相同的对象
推荐
D

Copy是创建一个新对象,Retain是创建一个指针,引用对象计数加1。

    Copy属性表示两个对象内容相同,新的对象retain为1 ,与旧有对象的引用计数无关,旧有对象没有变化。copy减少对象对上下文的依赖。

    Retain属性表示两个对象地址相同(建立一个指针,指针拷贝),内容相同,这个对象的retain值+1也就是说,retain 是指针拷贝,copy 是内容拷贝


编辑于 2015-01-30 10:26:11 回复(2)
http://etund.github.io/blog/2015/08/22/qian-kao-bei-yu-shen-kao-bei/这篇讲的比较详细。
发表于 2015-08-22 22:53:27 回复(1)
copy 分为shallow copy和deep copy。例如:在集合类对象中,对一个mutable的对象进行copy的时候,表示copy一个新的相同的对象,而如果是对immutable对象进行copy时,只是copy其指针,而不会copy存放于堆中的对象。
发表于 2016-07-29 16:49:07 回复(0)
retain在mrc下使用,表示对象的retainCount+1,创建了一个对象。
copy可以在mrc,也可以在arc下,分为浅拷贝,深拷贝。浅拷贝,不会产生新的对象,retainCount不会+1;深拷贝会产生新的对象,retainCount+1.
只有copy对象和复制后的对象都不可变时,才是浅拷贝。
发表于 2021-12-02 08:31:47 回复(0)
copy是创建一个新对象,retain是创建一个指针,引用对象计数加1。
Copy属性表示两个对象内容相同,新的对象retain为1 ,与旧有对象的引用计数无关,旧有对象没有变化。
copy减少对象对上下文的依赖。
retain属性表示两个对象地址相同(建立一个指针,指针拷贝),内容当然相同,这个对象的retain值+1也就是说,retain 是指针拷贝,copy 是内容拷贝。
发表于 2017-09-03 10:30:30 回复(0)
copy分为深copy及浅copy
发表于 2017-05-18 13:34:35 回复(0)
copy是要深拷贝一份出来,避免被修改。
发表于 2016-04-16 17:02:13 回复(0)
马虎了 
发表于 2016-02-20 10:24:00 回复(0)
 D.  retain 指针拷贝,copy内容拷贝
编辑于 2015-10-21 18:20:17 回复(0)
这道题是对 @property 常见字段的考察
一定要充分理解strong,weak,retain,assign,copy,nomatic等内容的区别。

可参考:http://www.jianshu.com/p/a2435b29875b
编辑于 2015-09-01 10:23:52 回复(0)
D  可变对象 copy 是深拷贝
发表于 2015-01-23 11:33:43 回复(0)
[-]. D retain是指针拷贝,copy是内容拷贝。
发表于 2015-01-15 15:21:08 回复(0)