Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/37.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 需要找出谁在保留NSMutableArray_Iphone - Fatal编程技术网

Iphone 需要找出谁在保留NSMutableArray

Iphone 需要找出谁在保留NSMutableArray,iphone,Iphone,我遇到了一个问题,需要找出哪些对象保留了NSMutableArray。如果它是我创建的对象,我可以覆盖retain和release并在其上设置断点,但由于它是一个NSMutableArray,所以我不能。我尝试将NSMutableArray子类化,但当我尝试将其添加到子类时,会出现异常。有什么想法吗 我知道您不应该真正关注保留计数,但这是我继承的复杂代码,不知道哪些对象在保留它 子类化无疑是您的最佳选择,但子类化类集群并不容易。您的异常可能是“仅为抽象类定义的blabl”之一 如果您想这样做,可

我遇到了一个问题,需要找出哪些对象保留了NSMutableArray。如果它是我创建的对象,我可以覆盖retain和release并在其上设置断点,但由于它是一个NSMutableArray,所以我不能。我尝试将NSMutableArray子类化,但当我尝试将其添加到子类时,会出现异常。有什么想法吗


我知道您不应该真正关注保留计数,但这是我继承的复杂代码,不知道哪些对象在保留它

子类化无疑是您的最佳选择,但子类化类集群并不容易。您的异常可能是“仅为抽象类定义的blabl”之一

如果您想这样做,可以将NSMutableArray的实例嵌入到自定义类中,并将实际对NSMutableArray的每个调用转发到嵌入实例

但是,遵守内存管理()的简单规则应该可以让您摆脱这种状况。确保释放阵列的每个拥有的实例。拥有的实例是使用名称以“alloc”或“new”开头或包含“copy”的方法获得的实例


确保在分配对象的基于属性(self.myProperty=…而不是myPorperty=…)时始终使用属性访问器。

这是一个好主意,可以转发到另一个类。通过查看保存阵列的其他对象的保留计数,我解决了问题。不是那么直接,而是足够近。还要注意增加保留计数的原子getter。它们最终会被清除,但肯定会使保留计数分析变得更加困难,我同意在大多数情况下应该避免这种情况。