首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Instruments报告泄漏?

为什么Instruments报告泄漏?
EN

Stack Overflow用户
提问于 2010-06-12 03:51:02
回答 1查看 40关注 0票数 0

我正在开发一个iphone应用程序。仪器报告了泄漏的对象ServiceTypes。以下是相关代码。有谁有什么想法吗?非常感谢你的帮助。

代码语言:javascript
复制
ServiceTypes *serviceTypes = [[ServiceTypes alloc] init];

if ([userConnection getServiceTypes:serviceTypes]) {
    if ([serviceTypes.types length] > 0) {
        NSArray *array = [[NSArray alloc] initWithArray:[serviceTypes.types componentsSeparatedByString: SERVICE_TYPE_DELIMITOR]];
        serviceRequestTypes = [[NSMutableArray alloc] initWithArray:array];
        [array release];
    }
}

[[self typesTableView] reloadData];
[serviceTypes release];
EN

回答 1

Stack Overflow用户

发布于 2010-06-12 04:07:44

看起来serviceTypes并没有被泄露。从您发布的代码可以看出,serviceTypes总是在方法的末尾释放,并且在示例中的任何地方似乎都没有使用retain。我的问题是:getServiceTypes:内部发生了什么。该方法是否保留serviceTypes参数?

还有一件事。如果serviceRequestTypes是一个实例变量(看起来像是),那么您可能会在没有首先释放现有serviceRequestTypes对象的情况下重新分配它,从而泄漏内存。您应该将serviceRequestTypes重写为属性并使用合成访问器,或者确保每次赋值之前都释放它。如果它的当前值是nil,没什么大不了的;release消息将被简单地忽略。例如:

代码语言:javascript
复制
[serviceRequestTypes release];
serviceRequestTypes = [[NSMutableArray alloc] initWithArray:[serviceTypes.types componentsSeparatedByString:SERVICE_TYPE_DELIMITER]];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3025766

复制
相关文章

相似问题

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