UIKitConvenience
UIKitConvenience copied to clipboard
block leak about recursion
__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];
}
}
}
instrument show block leak