__weak AFHTTPRequestOperation *commFriendsRequest = [completedRequests objectAtIndex:1];
if(!commFriendsRequest.error&&commFriendsRequest.responseData){
NSDictionary *commDic = [NSJSONSerialization JSONObjectWithData:commFriendsRequest.responseData options:NSJSONReadingMutableContainers error:NULL];//泄露46.2%
int status1 = [[commDic objectForKey:@"status"]intValue];
if(status1 == kSuccessCode){
NSArray *commFriendsArray = [commDic objectForKey:@"data"];
if(commFriendsArray&&commFriendsArray.count){
NSMutableArray *userItems = [NSMutableArray arrayWithCapacity:commFriendsArray.count];//泄露30.8%
for(NSDictionary *dic in commFriendsArray){
userItem *item = [[userItem alloc]initFromServer:dic];//23.1%
[userItems addObject:item];
}
if(profile){//共同好友与资料都成功
profile.commonFriends = userItems;
successBlock(profile);
}else{
if(status0==kSuccessCode){//共同好友
successBlock(userItems);
}else{
NSError *error = [NSError errorWithDomain:kErrorDomain code:status0 userInfo:nil];
failedBlock(error);
}
}
}else if(status0==kSuccessCode){//无共同好友,有profile
successBlock(profile);
}
}else{
if(status0==kSuccessCode){//资料有共同好友失败
successBlock(profile);
}else{//都失败了
NSError *error = [NSError errorWithDomain:kErrorDomain code:status1 userInfo:nil];
failedBlock(error);
}
}
}else{
failedBlock(commFriendsRequest.error);
}
在ARC底下Instruments显示就这么一块泄露,我看了半天不知道哪些的不对。
这块代码是在底下这个block里面的。
[client enqueueBatchOfHTTPRequestOperations:@[profileOperation,commFriendsOperation] progressBlock:^(NSUInteger finished, NSUInteger total){} completionBlock:^(NSArray *completedRequests){
//Code above placed here
}]
Thanks in advance.
看不出来,而且也不能确保就是这个Block里面的问题。。
最笨最古老的办法:把这段代码单独摘出去,然后用ui动画延时模拟网络请求,在把有信心的代码段一点一点去掉。。。 一定能找出来。
祝你好运。