iOS 使用instruments 查内存泄漏(AFN导致)

使用xcode工具instruments 的leak 来动态检查内存泄漏,出现了AFN导致的错误,基本都是AFHTTPSessionManager类导致的 

第一种方法   https://www.cnblogs.com/zhangshan/p/5313010.html

  重写AFHTTPSessionManager单例 然后在封装的网络请求里面吧static AFHTTPSessionManager *afnManager = nil; 加上  替换了  AFHTTPSessionManager * manager=[AFHTTPSessionManager manager]

/**

*  创建单例

*

*  @return <#return value description#>

*/+ (DataManager *)manager {


    static dispatch_once_t onceToken;

    dispatch_once(&onceToken, ^{

        manager = [[DataManager alloc] init];

        afnManager = [AFHTTPSessionManager manager];

        afnManager.responseSerializer = [AFHTTPResponseSerializer serializer];

    });


    return manager;

}

//POST请求- (void)postDataWithUrl:(NSString *)url parameters:(NSDictionary *)paramters success:(Success)success failure:(Failure)failure {


    [afnManager POST:url parameters:paramters progress:nil success:^(NSURLSessionDataTask * _Nonnull task,id  _Nullable responseObject) {

        if (responseObject) {

            success([[self class] handleResponseObject:responseObject]);

        }else {

            [[self class] showAlertViewWithMessage:@"暂无数据"];

        }

    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {

        if (error) {

            [[self class] showAlertViewWithMessage:@"服务器出错了~~~~(>_<)~~~~"];

            failure(error);

        }

    }];

}

第二中方法   https://www.cnblogs.com/iicecream/p/7130946.html

代码如下

.h头文件中

#import "AFNetworking/AFNetworking.h"


/**

 *  单利方法

 *

 *  @return 实例对象

 */

+(AFHTTPSessionManager*)shareManager;


.m文件中

#pragma mark - shareManager

/**

 *  获得全局唯一的网络请求实例单例方法

 *

 *  @return 网络请求类的实例

 */


+(AFHTTPSessionManager *)shareManager {

    static AFHTTPSessionManager *manager=nil;

    static dispatch_once_t onceToken;

    dispatch_once(&onceToken, ^{

        manager = AFHTTPSessionManager manager];

});


    return manager;

}


完毕



使用查内存泄漏的大概步骤:更改成relese环境,然后打开工具,点击红色圆圈右侧的 选中你要测试的app,然后点击 红圈开始,第二模块下面有个正方形的按钮 选calltree, 最下面还有一个calltree,选中separ.... by thread   和hide sys   然后就出来了   具体代表什么度娘呗。一个是线程 一个是隐藏系统的。

你可能感兴趣的:(iOS 使用instruments 查内存泄漏(AFN导致))