Iphone 在objective-c中释放对象的正确方法是什么

Iphone 在objective-c中释放对象的正确方法是什么,iphone,objective-c,release,Iphone,Objective C,Release,我得确认一下。 我以这种方式释放我的对象 [lblTotalQty, lblTotalAmt, imgEmptyBag, lblEmptyBagMsg release]; 这不是一个正确的方法吗 请引导我。很难说出你在问什么,因为你没有给出上下文 首先,我从未见过有人使用逗号分隔的标识符列表向发送单个消息,就像您在示例中所做的那样。。。但我想这不是问题的重点 除了使用自动释放池外,向对象发送release消息是释放它们的唯一方法 与释放对象的混淆通常更多的是“何时”而不是“如何”的问题。每个人

我得确认一下。 我以这种方式释放我的对象

[lblTotalQty, lblTotalAmt, imgEmptyBag, lblEmptyBagMsg release];
这不是一个正确的方法吗


请引导我。

很难说出你在问什么,因为你没有给出上下文

首先,我从未见过有人使用逗号分隔的标识符列表向发送单个消息,就像您在示例中所做的那样。。。但我想这不是问题的重点

除了使用自动释放池外,向对象发送
release
消息是释放它们的唯一方法


与释放对象的混淆通常更多的是“何时”而不是“如何”的问题。每个人都知道“如何”(调用
release
)。更大的问题通常是“我应该在什么时候释放或保留一个对象”

逗号运算符将放弃除最后一个表达式之外的所有表达式,因此您的语句实际上将成为

[lblEmptyBagMsg release];
所以你不应该以你在问题中指出的方式释放对象。分别执行这些操作,即分别对每个对象调用release。

关于如何释放对象,您可以通过发送释放消息来释放对象:

[myObject release];
以前从未见过逗号语法,有人建议只向最后一个对象发送消息(有人能确认吗?)

关于when,这是一个很长的故事,我建议你阅读苹果关于这个主题的文档; 你可以开始

基本上,您必须跟踪对象所有权,以避免双方两次解除分配同一对象,或者相反,永远不会

一开始听起来很麻烦,但在软件设计方面这是一个很好的实践;这种所有权层次结构为代码带来了有意义的结构


或者,如果您正在为Mac编码,则可以使用垃圾收集。此外,如果您正在为iOS 5.0+编写代码,并且正在启动一个新项目,那么您可以利用新的ARC(自动引用计数)功能,这基本上是由编译器自动生成的手动引用计数代码:这是两个世界的最佳选择。

Whoa,neat,从未见过有人使用逗号分隔的标识符列表向。。。很好。你是说这不是一个合适的方式。我们不能这样做吗?@Steve:如果成功的话,那就太好了。+1多亏了你,我通过阅读这篇文章学到了一些东西。这是我以前从未见过疯狂的逗号分隔标识符列表的原因!但迪帕克,我有个问题。如果我们可以定义变量,可以创建IBOutlet,可以定义属性,可以合成,那么我们就不能以这种方式发布Wy?因为我是以这种方式创建IBOutlet的。在这些情况下,逗号充当分隔符,而不是运算符()。这取决于语言的语法,我相信Objective-C并没有将其定义为分隔符。