1
現在我總是做同樣的:爲什麼要複製NSString而不是保留它?
NSString *ran = @"check";
現在,當我想複製nsstring1到nsstring2,我在這裏已經告訴我,我必須複製/保留的NSString例如,在各種方法(與財產保留/複製)..
NSString *animation = [ran copy];
我知道並理解如何做到這一點,但不能理解爲什麼。
這裏的內存究竟發生了什麼?我只是不明白,當我做複製/保留的事情時發生了什麼,我應該什麼時候這樣做? (在上面的第一個例子中也是??)
這裏的所有解釋都是關於複製/保留之間的區別,但是我找不到關於REASON的任何內容,我必須複製一個類實例。
WOW非常感謝!這是一個非常好的解釋! ,但現在,發佈呢?何時和爲什麼我應該釋放該新名稱?以及爲什麼仍然使用保留? – Curnelious
另一件事,在你的例子中,爲什麼我不能在setname中做:_name = newName?爲什麼我需要保留這個? – Curnelious
您需要保留以讓系統知道您希望對象留在附近。否則,它可能會釋放它。當你完成它的時候你釋放這個對象,這樣系統知道它可以釋放它(如果沒有人願意的話)。如果使用ARC(自動引用計數),則不必保留或釋放。 ARC可在Mac OS X 10.7和iOS 5.0中使用。 –