何时发布瞬态NSString StringWithFormat?

时间:2011-04-25 19:24:50

标签: ios memory-management nsstring stringwithformat

请帮助新手进行iPhone开发。在我的应用程序中,我做了很多,仪器将其显示为泄漏。这样做的正确方法是什么?

我正在尝试将数值数据重新格式化为字符串,以便在NSMutableDictionary对象中使用。所以我觉得如果我这样做会很棒:

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

我不想写3行来做...

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

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

2 个答案:

答案 0 :(得分:8)

您无需发布它。由于stringWithFormat不是以allocinitnewcopymutableCopy开头,因此您不负责发布它除非你明确保留它。

当仪器显示泄漏时,它会显示泄漏对象的分配位置,但不一定是实际导致泄漏的代码。我怀疑你正在泄漏myDict,因此它内部的所有物体都会泄漏。

答案 1 :(得分:3)

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

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