2014-01-20 91 views
0
NSString *pDescText = @"blablabla"; 
pDescText = [NSString stringWithFormat:@"%@ %@",skProduct.localizedDescription,formattedPrice]; 

當我重新分配第2行中的pDescText時,會產生內存泄漏嗎?這個NSString是內存泄漏嗎?

回答

4

如果您使用ARC,則無需擔心這些泄漏。

如果使用MRC,你沒有泄漏的原因是:

你只需要通過發送包含newallocretaincopy消息釋放,你有一個接收的參考對象。你沒有這樣做過,所以你沒有對pDescText的擁有參考。此外,在第一行中,您正在使用字符串文字,這是你不必擔心內存管理。

我不得不說這個pDescText不是一個很好的名字用於可可中的變量。我們不使用匈牙利符號(所以p表示不需要指針),而完整的描述性變量名稱是常態。所以不是pDescText一個更有經驗的可可開發人員會使用descriptiveText甚至productDescriptiondescription,如果這足夠上下文。

+1

當回答一個問題只是爲了幫助其他可能正在查看此答案的新手時,獲得一點額外的寶石(回覆:變量名稱)總是不錯的。 –

+0

我使用了一個小小的助記符:如果它是* N * -ot * ARC *,release * NARC *(* N * ew,* A * lloc,* R * etain,* C * opy)。如果你沒有看到這些單詞,不要擔心發佈 –

+0

我想要一個說'new&alloc&retain&copy'的t恤;就像着名的[披頭士T恤](http://www.experimentaljetset.nl/archive/john-paul-ringo-george) – Abizern

0

不,NSString便利構造函數返回一個自動釋放對象。