[NString alloc]可能存在内存泄漏



我为跨平台应用程序编写插件。我的代码几乎完全依赖于应用程序的API与外部世界进行交互,这意味着我在操作系统级API方面的经验有限。但我确实有少量特定于操作系统的代码来实现应用程序的API没有提供的目标。在Mac端,我有很多类似这样的代码片段,它们改变了窗口的标题:

首先是一个实用函数:

NSString *GetNSStringFromUTF16 ( const utf16char * const str )
{
size_t len = 0;
while ( str[len] )
len++;
NSData* data = [[NSData alloc] initWithBytes:str length:sizeof(*str)*len];
NSString* retVal = [[NSString alloc] initWithData:data encoding:NSUTF16LittleEndianStringEncoding];
[data release];
return retVal;
}

然后,稍后我将窗口标题设置为:

[myWind setTitle:GetNSStringFromUTF16(newTitleStr)];

我正在运行XCode Analyze;可能的存储器泄漏";从对我的CCD_ 1函数的调用。但它并没有标记这个。这是不是内存泄漏?

不要思考。只要遵循黄金法则:如果你说alloccopyretain,你就必须说release。你说的是alloc吗?对那么你必须说release。您需要先autorelease您的retVal,然后才能退货。

其他注释:方法名称不要以大写字母开头。并且不要以GetNSStringFromUTF160作为函数名称的开头!这会影响分析器对内存管理的预期

最后一条评论:如果可能的话,使用ARC而不是手动内存管理。

相关内容

  • 没有找到相关文章

最新更新