2

请帮助 iPhone 开发的新手。在我的应用程序中,我经常这样做,而 Instruments 将其显示为泄漏。这样做的正确方法是什么?

我正在尝试将数字数据重新格式化为用于 NSMutableDictionary 对象的字符串。所以我认为如果我做这样的事情会很棒:

[myDict setObject:[NSString stringWithFormat:@"%d", section] forKey:@"Category"];

我讨厌不得不写 3 行来做到这一点......

NSString *cat = [NSString stringWithFormat:@"%d", section];
[myDict setObject:cat forKey:@"Category"];
[cat release];

如果我必须这样做,我会这样做,但这种短暂使用的最佳做法是什么?

4

2 回答 2

8

你不需要释放它。由于stringWithFormat不以alloc, init, new,copy或开头,mutableCopy除非您明确保留它,否则您不负责发布它。

当 Instruments 向您显示泄漏时,它会向您显示泄漏对象的分配位置,但不一定是实际导致泄漏的代码。我怀疑您正在泄漏myDict,因此其中的所有对象也都泄漏了。

于 2011-04-25T19:28:44.760 回答
3

你永远不会释放它。它已经自动发布了。

您只能释放通过名称以+alloc+new -copy-mutableCopy或开头的方法提供给您的对象-retain。如果名称以其他任何内容开头,则您不拥有它并且不负责发布它。

于 2011-04-25T19:27:56.163 回答