[NSString alloc] 可能发生内存泄漏

Possible Memory Leak with [NSString alloc]

我为 cross-platform 应用程序编写插件。我的代码几乎完全依赖于应用程序的 API 来与外界交互,这意味着我对 OS-level API 的体验是有限的。但我确实有少量 OS-specific 代码来实现应用程序 API 未提供的目标。在 Mac 方面,我有许多代码片段,例如更改 Window:

标题的代码片段

首先是效用函数:

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;
}

然后我设置 window 标题是这样的:

[myWind setTitle:GetNSStringFromUTF16(newTitleStr)];

我进行了 运行 XCode 分析,它标记了一些调用我的 GetNSStringFromUTF16 函数的“可能的内存泄漏”。但它没有标记这个。是不是内存泄漏?

别想了。只需遵循黄金法则:如果您说 alloccopyretain,则必须说 release。你说alloc?是的!那么你必须说release。在 return 之前,您需要 autorelease 您的 retVal

其他说明:方法名不要以大写字母开头。并且不要以 get 开头您的函数名称!这会影响分析器对内存管理的期望。

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