@property (nonatomic, copy) NSString * imageURL;
,並在PC中的dealloc我有[imageURL release];
這應該永遠不會導致另一個類崩潰
我打電話
pc.imageURL = url;
我想問一下,如果我拿這個確定,因爲我的應用程序有奇怪的崩潰
以前我總是做
pc.imageURL = [[NSString alloc] initWithString:url];
謝謝
@property (nonatomic, copy) NSString * imageURL;
,並在PC中的dealloc我有[imageURL release];
這應該永遠不會導致另一個類崩潰
我打電話
pc.imageURL = url;
我想問一下,如果我拿這個確定,因爲我的應用程序有奇怪的崩潰
以前我總是做
pc.imageURL = [[NSString alloc] initWithString:url];
謝謝
你在做什麼是正確的。但是,你做了什麼之前是錯誤的,因爲
[[NSString alloc] initWithString:url];
保留了新的字符串,但它從來沒有得到釋放。
我想你已經在release
內建了一個你不需要的,因爲你之前試圖避免內存泄漏。
感謝您的回覆,但我不明白最後一句的含義:「我認爲您已經建立了一個您不需要的版本,因爲您之前嘗試避免內存泄漏。」我認爲如果我[[NSString alloc] initWithString:url],比默認內容 – 2011-04-10 10:33:59
[[NString alloc] initWithString:url]自動調用不會autorelease。 [NSString stringWithString:url]會自動釋放。如果你分配它,你擁有它並且必須釋放它。 – 2011-04-10 13:18:07
@彼得:基本上特里已經說過了。我相信你已經添加了一個不必要的'-release',因爲你通過做'[[NSString alloc] initWithString:url];'錯誤地保留了你的字符串。你必須弄清楚你在哪裏釋放字符串,你不應該。 – 2011-04-10 14:13:21
你有沒有試過調試它來找出*爲什麼*和*哪裏*它崩潰? – 2011-04-10 10:16:53