我必须确认一些事情。 我以这种方式发布我的对象。
[lblTotalQty, lblTotalAmt, imgEmptyBag, lblEmptyBagMsg release];
这不是一个正确的方法吗?
请指导我。
答案 0 :(得分:6)
逗号操作符将丢弃除最后一个之外的所有表达式,因此您的语句实际上将变为
[lblEmptyBagMsg release];
所以你不应该按照你在问题中指出的方式发布对象。单独进行,即分别对每个对象进行释放。
答案 1 :(得分:1)
很难说出你在这里问的是什么,因为你没有给出任何背景信息。
首先,我从未见过有人使用逗号分隔的标识符列表来发送单个消息,正如您在示例中所做的那样...但我认为这不是问题的关键点。
除了使用自动释放池之外,向对象发送release
消息是唯一方式释放它们。
释放对象的困惑通常更多的是“何时”而非“如何”的问题。每个人都知道“如何”(致电release
)。更大的问题通常是“何时应该释放或保留一个物体”。
答案 2 :(得分:0)
关于 如何 ,您可以通过发送发布消息来释放对象:
[myObject release];
之前从未见过逗号语法,有人建议只发送最后一个对象的消息(任何人都可以确认这个吗?)
关于 何时 ,这是一个很长的故事,我建议你阅读Apple关于这个主题的文档; 你可以开始here。
基本上,您必须跟踪对象所有权,以避免两方取消分配同一对象两次,或相反,永远不会。
一开始听起来很麻烦,但在软件设计方面这是一个非常好的做法;此所有权层次结构为您的代码带来了有意义的结构。
或者, IF 您正在为Mac编码,您可以使用垃圾收集。此外,如果您正在编写iOS 5.0+并开始一个新项目,您可以利用新的ARC(自动引用计数)功能,该功能基本上是由编译器自动生成的手动引用计数代码:两者中的最佳选择世界。