我正在开发一个iphone应用程序。仪器报告了泄漏的对象ServiceTypes。以下是相关代码。有谁有什么想法吗?非常感谢你的帮助。
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];发布于 2010-06-12 04:07:44
看起来serviceTypes并没有被泄露。从您发布的代码可以看出,serviceTypes总是在方法的末尾释放,并且在示例中的任何地方似乎都没有使用retain。我的问题是:getServiceTypes:内部发生了什么。该方法是否保留serviceTypes参数?
还有一件事。如果serviceRequestTypes是一个实例变量(看起来像是),那么您可能会在没有首先释放现有serviceRequestTypes对象的情况下重新分配它,从而泄漏内存。您应该将serviceRequestTypes重写为属性并使用合成访问器,或者确保每次赋值之前都释放它。如果它的当前值是nil,没什么大不了的;release消息将被简单地忽略。例如:
[serviceRequestTypes release];
serviceRequestTypes = [[NSMutableArray alloc] initWithArray:[serviceTypes.types componentsSeparatedByString:SERVICE_TYPE_DELIMITER]];https://stackoverflow.com/questions/3025766
复制相似问题