在下面的代码中,当tapsMessage被释放或赋值运算符以某种方式递增保留计数以使tapsLabel.text继续可用时,将释放tapsLable.text吗?一个简单的目标C xcode内存管理问题
NSString *tapsMessage = [[NSString alloc] initWithFormat:@"%d taps detected", numTaps];
tapsLabel.text = tapsMessage; // tapsLabel is a UILabel object
[tapsMessage release];
我是新来的Objective-C,但我知道C.如果赋值操作符有时会导致保留计数的副本或增量,有时它不会,这会使内存管理非常成问题。如何知道何时发布以及什么时候不发布,以及如何查看每个分配给某个对象的实现细节? (只是好奇) – bhause 2010-08-25 05:23:43
规则其实很简单,一旦你习惯了。看到这里:http://developer.apple.com/mac/library/documentation/cocoa/conceptual/MemoryMgmt/Articles/mmRules.html在你的例子retainCount for tapsMessage实际上不应该增加,因为它是一个副本,而不是保留,操作。正如您在内存管理指南中所看到的,您不必查看实现细节以知道何时(不)发布。 – Jaanus 2010-08-25 05:29:32
感谢大家的帮助和患者。我认为现在很清楚。 – bhause 2010-08-25 21:58:01