iOS复制属性创建新对象、保留、内存分配
如果我有一个“复制”属性并将其设置为另一个对象,我实际上会创建一个保留计数为1的新对象iOS复制属性创建新对象、保留、内存分配,ios,objective-c,memory,copy,Ios,Objective C,Memory,Copy,如果我有一个“复制”属性并将其设置为另一个对象,我实际上会创建一个保留计数为1的新对象 @property (copy) myObject; myobject = someOtherObject; //&myOBject != &someOtherObject 现在,让我们调用myObject的地址&myObject1 如果我在将myObject设置为其他对象后执行此操作 myObject = someOtherObject2 &myObject1会发生什么情况?现在,myO
@property (copy) myObject;
myobject = someOtherObject;
//&myOBject != &someOtherObject
现在,让我们调用myObject的地址&myObject1
如果我在将myObject设置为其他对象后执行此操作
myObject = someOtherObject2
&myObject1会发生什么情况?现在,myObject指向一个值,该值与someOtherObject2的值相等,但位于一个新的内存地址。&myObject1发生了什么,还有什么东西指向它吗?请注意,问题中的
@property
语句没有提供类型
如果someOtherObject
是不可变的,则不会创建副本,只有递增的引用计数,myobject
和someOtherObject
都指向同一对象。这是操作系统所需要的一切,因为不可变对象无法更改。对任一指针的更改都将更改单个对象
如果
someOtherObject
是可变的,则创建一个副本,现在有两个不同的实例。未对原始的someOtherObject
进行任何更改。my object
和someOtherObject
都指向单独的实例,彼此没有关系。如果它们是可变的,则对其中一个对象的更改不会更改另一个对象。那么,如果我将其设置为可变的someOtherObject
,然后将其设置为同样可变的someOtherObject2
,会发生什么?第二次设置后,&myObject
会发生什么情况?您需要指定“it”是什么。最好用一个完整的例子来更新你的问题,说明对象的类型(可变或不可变)。一个简单的类型选择是NSMutableString
和NSString
。