首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >stringWithString内存泄漏

stringWithString内存泄漏
EN

Stack Overflow用户
提问于 2011-02-14 16:45:52
回答 3查看 564关注 0票数 0

您好,我有一个简单的函数,基本上返回一个输入字符串的修剪版本。问题是,当我运行instruments & check for leaks时,这个函数会显示100%的泄漏,特别是在stringWithString行。

有没有人能告诉我我哪里做错了?

代码语言:javascript
复制
+ (NSString *) trim:(NSString *)string
{
    if (string == nil)
        return nil;
    NSString *str = [NSString stringWithString:string];
    str = [str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

    //[[NSString stringWithString:[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]] autorelease];
    return str;
}
EN

回答 3

Stack Overflow用户

发布于 2011-02-14 17:00:04

如果这段代码是在线程上运行的,请确保设置了自动释放池。stringWithString返回一个自动释放的对象,只有当你的线程有一个自动释放池时才会发生这种情况。

票数 3
EN

Stack Overflow用户

发布于 2011-02-14 16:51:28

首先,在我看来这绝对没问题,你确定泄漏是stringWithString:造成的吗?

那么,你无论如何都不需要它了。您可以简单地这样做:

代码语言:javascript
复制
+ (NSString *) trim:(NSString *)string
{
    if (string == nil)
        return nil;

    return [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
}
票数 2
EN

Stack Overflow用户

发布于 2011-02-14 16:51:32

我能想到的唯一原因是,如果您从没有NSAutoReleasePool的派生线程运行这段代码,因为[NSString stringWithString:string];有一条autorelease消息发送给它。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4990209

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档