在下面的代碼中,當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