【发布时间】:2009-08-18 18:59:18
【问题描述】:
我仍在处理我的泄漏问题,我不知道如何解决这个问题我在每个 arrayTmp addObject 行都有泄漏
NSMutableArray *arrayTmp= [[NSMutableArray alloc] init];
[arrayTmp addObject:[NSDictionary dictionaryWithObjectsAndKeys:@"1", @"value", @"Value 1", @"name", nil]];
[arrayTmp addObject:[NSDictionary dictionaryWithObjectsAndKeys:@"2", @"value", @"Value 2", @"name", nil]];
[arrayTmp addObject:[NSDictionary dictionaryWithObjectsAndKeys:@"3", @"value", @"Value 3", @"name", nil]];
[arrayTmp addObject:[NSDictionary dictionaryWithObjectsAndKeys:@"4", @"value", @"Value 4", @"name", nil]];
//add arrayTmp to an object to use later
[arrayTmp release];
arrayTmp=nil;
arrayTmp= [[NSMutableArray alloc] init];
[arrayTmp addObject:[NSDictionary dictionaryWithObjectsAndKeys:@"1", @"value", @"other value 1", @"name", nil]];
[arrayTmp addObject:[NSDictionary dictionaryWithObjectsAndKeys:@"2", @"value", @"other value 2", @"name", nil]];
//add arrayTmp to an object to use later
[arrayTmp release];
arrayTmp=nil;
...
这里是我的过滤器类的代码
@implementation Filter
@synthesize label;
@synthesize valueIndex;
@synthesize listValue;
@synthesize webServiceFieldName;
-(id) initWithLabel:(NSString *)plabel AndValue:(int)pvalueIndex AndListValue:(NSMutableArray *)plistValue AndWebServiceFieldName:(NSString *)pwebServiceFieldName {
self = [super init];
if (self != nil) {
self.label = plabel;
self.valueIndex = pvalueIndex;
self.listValue = plistValue;
self.webServiceFieldName = pwebServiceFieldName;
}
return self;
}
@end
【问题讨论】:
-
我没有看到任何泄漏。你在用什么来告诉你有什么?
-
我使用xCode泄漏性能工具第二次调用此代码时出现泄漏
-
如何将arrayTmp添加到对象中以备后用?那里是否有实际代码,如果有,它是什么?那可能是泄漏...另外,您不需要设置为零。毫无意义。
-
例如,如果您有后续的 [arrayTmp length] 调用,将 var 设置为 nil 可能会防止您崩溃。如果没有更广泛的背景,我不会说它毫无意义。
-
我做了类似 filterTmp1 = [[Filter alloc] initWithLabel:@"Filter 1" AndValue:0 AndListValue:arrayTmp AndWebServiceFieldName:@"filter1"];
标签: objective-c arrays memory-leaks nsdictionary