Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.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
Iphone 如果一个方法接受对象并添加到数组中,它是否应该在必要时检测并释放该对象?_Iphone_Objective C_Ios_Memory Management_Nsmutablearray - Fatal编程技术网

Iphone 如果一个方法接受对象并添加到数组中,它是否应该在必要时检测并释放该对象?

Iphone 如果一个方法接受对象并添加到数组中,它是否应该在必要时检测并释放该对象?,iphone,objective-c,ios,memory-management,nsmutablearray,Iphone,Objective C,Ios,Memory Management,Nsmutablearray,如果我有一个助手方法将对象添加到自定义类中的数组NSMutableArray中,那么执行以下操作是否有意义: 以某种方式自动检测传入对象是否已自动释放?那么,如果不在将其添加到阵列后释放它? 在dealloc中,迭代数组中的所有对象,并以某种方式检查它们是否不需要释放,然后在释放后检查数组本身? 我所关心的是,当我必须解除锁定我的自定义类(包括数组)时,我如何知道数组中对象的状态?在将对象传递给函数后,调用助手方法以通过自动释放或正常释放释放对象的代码应该负责。传递给您的对象将保留在数组中供您使

如果我有一个助手方法将对象添加到自定义类中的数组NSMutableArray中,那么执行以下操作是否有意义:

以某种方式自动检测传入对象是否已自动释放?那么,如果不在将其添加到阵列后释放它? 在dealloc中,迭代数组中的所有对象,并以某种方式检查它们是否不需要释放,然后在释放后检查数组本身?
我所关心的是,当我必须解除锁定我的自定义类(包括数组)时,我如何知道数组中对象的状态?

在将对象传递给函数后,调用助手方法以通过自动释放或正常释放释放对象的代码应该负责。传递给您的对象将保留在数组中供您使用。当您在dealloc中释放数组时,该数组中的所有对象都将被释放。有道理吗


也就是说,您不需要做任何特殊的事情,只需将对象添加到数组中即可。

在将对象传递到函数后,代码应该负责调用帮助器方法,通过自动释放或正常释放来释放对象。传递给您的对象将保留在数组中供您使用。当您在dealloc中释放数组时,该数组中的所有对象都将被释放。有道理吗


也就是说,您不需要执行任何特殊操作,只需将对象添加到数组中。

除了访问器方法之外,您不需要在方法中执行任何操作来处理内存中的其他对象。这就是客体所有权的整体理念;因为您的方法不拥有您传入的对象,所以它不应该处理该对象的内存。NSMutableArray将在解除分配时处理它所包含的对象,您不必执行任何操作,只需在处理完数组后释放它。

除了访问器方法之外,您不必在方法中执行任何操作来处理其他内存对象。这就是客体所有权的整体理念;因为您的方法不拥有您传入的对象,所以它不应该处理该对象的内存。NSMutableArray将在解除分配时处理它所包含的对象,您不必做任何工作,只需在处理完数组后释放它。

最简单的规则——这一点经常被提及——是您应该只释放已显式分配了alloc、copy、newed up new、,或保留。在您描述的场景中,您对任何事情都不负责。如果您的方法没有执行上述四项操作中的任何一项,则无需担心。

最简单的规则是,您应该只释放已显式分配alloc、复制copy、新建或保留的对象。在您描述的场景中,您对任何事情都不负责。如果你的方法没有做上述四件事中的任何一件,那就没什么好担心的了

以某种方式自动检测传入对象是否已自动释放?那么,如果不在将其添加到阵列后释放它

否-集合保留它们添加的对象,然后在移除时释放它们

在dealloc中,迭代数组中的所有对象,并以某种方式检查它们是否不需要释放,然后在释放后检查数组本身

否-集合保留它们添加的对象,然后在移除时释放它们

我关心的是,当我必须解除锁定我的自定义类(包括数组)时,我如何知道数组中对象的状态

集合将处理它,并在对象位于集合中时保留对该对象的引用。当然,当保存它的对象移除或替换它时,您需要对数组本身调用release,例如在dealloc中

以某种方式自动检测传入对象是否已自动释放?那么,如果不在将其添加到阵列后释放它

否-集合保留它们添加的对象,然后在移除时释放它们

在dealloc中,迭代数组中的所有对象,并以某种方式检查它们是否不需要释放,然后在释放后检查数组本身

否-集合保留它们添加的对象,然后在移除时释放它们

我关心的是,当我必须解除锁定我的自定义类(包括数组)时,我如何知道数组中对象的状态


集合将处理它,并在对象位于集合中时保留对该对象的引用。当然,当保存它的对象删除或替换它时,您需要对数组本身调用release,例如在dealloc中。

它不需要知道。事实上,这对你们班来说并不重要。如果调用代码标记
当对象自动释放时,它不拥有自己的指针。如果它保留了对象,则它拥有这些对象。您自己的助手不需要知道这一点,也不需要知道。事实上,这对你们班来说并不重要。如果调用代码将对象标记为自动删除,则它不拥有自己的指针。如果它保留了对象,则它拥有这些对象。你自己的助手不需要知道这一点。是的-那么我只需要在dealoc方法中发布[\u myArray release]就可以了,对吗?是的-那么我只需要在dealoc方法中发布[\u myArray release]就可以了,对吗?