Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/115.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 给我内存泄漏的网络代码_Ios_Iphone_Memory Leaks_Xcode6_Afnetworking 2 - Fatal编程技术网

Ios 给我内存泄漏的网络代码

Ios 给我内存泄漏的网络代码,ios,iphone,memory-leaks,xcode6,afnetworking-2,Ios,Iphone,Memory Leaks,Xcode6,Afnetworking 2,我收到上面这段代码的内存泄漏。正如您所见,我对%的数量进行了注释,与泄漏仪器的注释相同。我正在运行Xcode 6,测试是在我的iPhone设备5s IOS 7.1.1上进行的 下面是一个截图,显示了如何使用该工具。 每次调用“postEventInfo”,您都在创建一个AFHTTPSessionManager对象 如果您使用的是ARC,这应该意味着旧对象被释放(也就是说,没有这样的问题)。但出于最佳实践的考虑,您应该这样做: @implementation GetData static NSS

我收到上面这段代码的内存泄漏。正如您所见,我对%的数量进行了注释,与泄漏仪器的注释相同。我正在运行Xcode 6,测试是在我的iPhone设备5s IOS 7.1.1上进行的

下面是一个截图,显示了如何使用该工具。

每次调用“
postEventInfo
”,您都在创建一个
AFHTTPSessionManager
对象

如果您使用的是ARC,这应该意味着旧对象被释放(也就是说,没有这样的问题)。但出于最佳实践的考虑,您应该这样做:

@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!"];
        }];
    }

如果我只是创建一个AFHTTPSessionManager属性并在不同的地方使用它,这会是一样的吗?既然我有了另一个post方法,我想应该没问题,但是再说一次,你会同时调用这两个post吗?来自同一个类/视图控制器?我按照您所说的做了,但是第二次它仍然会出现在if语句中,因此如果(!self.manager)没有执行此操作,是否有其他方法可以查看对象是否已初始化?我猜您所说的是真的,因为泄漏总是在我第二次调用postEvent方法时出现。但我自己的经理总是零,这会是什么问题呢?
// 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%
}