UIKitConvenience icon indicating copy to clipboard operation
UIKitConvenience copied to clipboard

block leak about recursion

Open chdtyzhy opened this issue 10 years ago • 1 comments

  __block  LTMAOSPoiDataClassify * (^selectClassifiBlock)(NSString *checkVlue,LTMAOSPoiDataClassify *data) = ^(NSString *checkValue,LTMAOSPoiDataClassify *data) {
      LTMAOSPoiDataClassify *defaultData = nil;
    if (!checkValue || checkValue.length == 0) {
    defaultData = [self getDefaultClassifyData:data];
    return defaultData;
    }
    if (data.value && [checkValue isEqualToString:data.value]) {
        defaultData = data;
        return defaultData;
    }
      for (LTMAOSPoiDataClassify *item in data.category) {
          defaultData = selectClassifiBlock(checkValue,item);
          if (defaultData != nil) {
              break;
          }
    }
    return defaultData;
};

__block  NSMutableString *mutlSelet = [NSMutableString string];
__block  NSMutableString *(^ mutiSeletClassiBlock)(NSString *checkValue,LTMAOSPoiDataClassify *data) = ^(NSString *checkValue,LTMAOSPoiDataClassify *data){
    if (mutlSelet.length >50) {
        return mutlSelet;
    }
    if (!checkValue || checkValue.length == 0) {
        if (classifyData) {
            [mutlSelet appendString:data.name];
        }
        return mutlSelet;
    }
    if (checkValue && checkValue.length) {
      if (data.value && [checkValue rangeOfString:data.value].location !=NSNotFound) {
         if (mutlSelet.length) {
            [mutlSelet appendFormat:@"+%@",data.name];
         }else{
            [mutlSelet appendString:data.name];
         }
       }
    }
    for (LTMAOSPoiDataClassify *item in data.category) {
        mutlSelet =  mutiSeletClassiBlock(checkValue,item);
   }
    return mutlSelet;
};

LTMAOSPoiDataClassify  *checkData = nil;
if (isMutiseletd) {
    mutiSeletClassiBlock(value,classifyData);
    checkData  = [self.classifyData objectAtIndex:index];
    LTMAOSPoiDataClassify  *tempData = [LTMAOSPoiDataClassify new];
    tempData.category = checkData.category;
    NSString *str = [self poifilteNames:mutlSelet];
    tempData.name = str.length?str:checkData.name ;
    tempData.value = checkData.value;
    tempData.ctype = checkData.ctype;
    checkData.isMultiselect = isMutiseletd;
    tempData.isMultiselect =  isMutiseletd;
    if (tempData) {
        if (index < _selectedClassifyData.count) {
            //崩溃保护
            [_selectedClassifyData replaceObjectAtIndex:index withObject:tempData];
        }
    }
}else{
    checkData = selectClassifiBlock(value,classifyData);
    checkData.isMultiselect = isMutiseletd;
    if (checkData) {
       if (index < _selectedClassifyData.count) {
        //崩溃保护
        [_selectedClassifyData replaceObjectAtIndex:index withObject:checkData];
        }
    }

}

chdtyzhy avatar Dec 12 '15 05:12 chdtyzhy

instrument show block leak

chdtyzhy avatar Dec 12 '15 05:12 chdtyzhy