这里的基本问题。我开始使用 ARC,但不确定是否应该在另一个对象获得所有权的情况下释放对象。
例如[self.view addSubview:someViewController.view];
是否应该发布此视图,或者我可以保持原样吗?
数组也是如此,当将对象添加到数组时,我应该在之后释放它们,因为数组具有对象所有权还是我可以离开它?
这里的基本问题。我开始使用 ARC,但不确定是否应该在另一个对象获得所有权的情况下释放对象。
例如[self.view addSubview:someViewController.view];
是否应该发布此视图,或者我可以保持原样吗?
数组也是如此,当将对象添加到数组时,我应该在之后释放它们,因为数组具有对象所有权还是我可以离开它?
对于这种情况[self.view addSubview:someViewController.view];
,如果 someViewController 是一个强属性,那么在使用它之后,你应该调用self.someViewController = nil
对于一个数组,你不会在对象上调用 release,但如果数组是一个强属性,那么当你完成它时,你需要将它设置为 nil
使用 ARC,您可能不会发布任何内容。编译器将确定何时何地释放给定对象——你不能自己做。
如果您不使用 ARC,那么答案将是:如果您已保留(或复制、分配或使用 new 创建)对象,则释放该对象,并且您已完成引用。因此,如果您使用 创建一个对象alloc
,将其添加到数组中,随后不再需要自己跟踪该对象,那么是的,您应该释放它。数组和其他集合将保留它们包含的对象。但同样,这只是在您不使用 ARC 的情况下;如果您正在使用它,那么您无需担心释放任何内容。
在 ARC 中不再释放和保留,保持原样。