2014-01-20 55 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便利构造函数返回一个自动释放对象。