Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.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
Objective c 可变数组中自定义类对象的内存处理_Objective C_Arrays - Fatal编程技术网

Objective c 可变数组中自定义类对象的内存处理

Objective c 可变数组中自定义类对象的内存处理,objective-c,arrays,Objective C,Arrays,我搜索了这个问题,但没有找到合适的答案: 我在java上工作了很长时间,现在我想学习Objective-C 以下是场景: 我有一个Objective C类,它扩展了NSObject类,该类包含NSString类型和CustomObject类型的存储字段,我在其中创建了@PropertyOnAtomic、retain NSString或MyObject属性。 创建自定义类的对象后,我将其作为[myArray addObject:myObject]放入NSArray中 现在我想问的是,如果我释放my

我搜索了这个问题,但没有找到合适的答案: 我在java上工作了很长时间,现在我想学习Objective-C

以下是场景: 我有一个Objective C类,它扩展了NSObject类,该类包含NSString类型和CustomObject类型的存储字段,我在其中创建了@PropertyOnAtomic、retain NSString或MyObject属性。 创建自定义类的对象后,我将其作为[myArray addObject:myObject]放入NSArray中


现在我想问的是,如果我释放myArray,我是否必须释放该数组中的对象和该对象中的字段,并且某些字段太过自定义,属于另一个类的对象

我仍在学习objc,我认为当您创建自定义对象时,保留计数会增加,将其添加到数组中也会增加保留计数。因此,当您释放数组中的对象时,它仍然有一个需要释放的保留计数。那只是我的想法

解除分配NSArray时,将向阵列中的每个对象发送一条释放消息。如果对对象的唯一引用在数组中,那么对象将调用其dealloc方法,该方法负责释放其所有属性

您是否考虑过使用ARC而不是经典的retain版本?这将使思考这类问题变得更容易。实际上,我想使用手动释放而不是ARCthaks来回答您的问题,但是其他与该对象关联的自定义对象呢,因为存在实例变量,就像Daniel在释放数组时的回答一样,如果NSArray中只有一个引用,则数组中的每个对象将收到一条释放消息并减去retain count.okz。如果我发布了array,自定义类的子字段也将被发布,其中这些子字段也是自定义对象,只要您的自定义对象在其dealloc方法中发布它们(它可能应该这样做)