Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/117.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS复制属性创建新对象、保留、内存分配_Ios_Objective C_Memory_Copy - Fatal编程技术网

iOS复制属性创建新对象、保留、内存分配

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

如果我有一个“复制”属性并将其设置为另一个对象,我实际上会创建一个保留计数为1的新对象

@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