您的位置:首页 > 移动开发 > IOS开发

iOS NSString 内存泄漏 , 求解决

2012-08-10 11:22 204 查看
递归, autorelease对象如何避免内存泄漏????
-(NSString *) getStuJsonString : (StuNode *) stuNode{

NSString *nodeJsonString = [[NSString
alloc] initWithString:@""];
{
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingString:
@"{"]] autorelease];
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingFormat:@"\"visible\":\"%@\",", [self
FormatNillOrNilOrnull:stuNode.Visible]]]
autorelease];

//othters
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingFormat:@"\"title\":\"%@\",", [self
FormatNillOrNilOrnull:stuNode.title]]]
autorelease];
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingFormat:@"\"courseName\":\"%@\",", [self
FormatNillOrNilOrnull:stuNode.courseName]]]
autorelease];
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingFormat:@"\"href\":\"%@\",", [self
FormatNillOrNilOrnull:stuNode.href]]]
autorelease];
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingFormat:@"\"sid\":\"%@\",", [self
FormatNillOrNilOrnull:stuNode.sid]]]
autorelease];
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingFormat:@"\"rid\":\"%@\",", [self
FormatNillOrNilOrnull:stuNode.rid]]]
autorelease];
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingFormat:@"\"courseID\":\"%@\",", [self
FormatNillOrNilOrnull:stuNode.courseID]]]
autorelease];
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingFormat:@"\"studentID\":\"%@\",", [self
FormatNillOrNilOrnull:stuNode.studentID]]]
autorelease];

//rtdata

if(stuNode.RTData ==
nil || stuNode.RTData == (id)[NSNull
null]){
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingString:@"\"RTData\":null,"]]
autorelease];
}
else {
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingString:@"\"RTData\":{"]]
autorelease];

//core

NSMutableArray *arr_core = stuNode.RTData.core;
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingString:@"\"core\":["]]
autorelease];

for(RTDataNodeCoreItem* coreItem
in arr_core) {
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingString:@"{"]]
autorelease];

if([coreItem.Itemid
compare:@"score"] !=
NSOrderedSame) {
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingFormat:@"\"value\":\"%@\",", [self
FormatNillOrNilOrnull:coreItem.value]]]
autorelease];
}
else {
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingString:@"\"value\":["]]
autorelease];

for(RTDataNodeCoreItem *score_core_item
in coreItem.scoreValue){
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingString:@"{"]]
autorelease];
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingFormat:@"\"value\":\"%@\",", [self
FormatNillOrNilOrnull:score_core_item.value]]]
autorelease];
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingFormat:@"\"id\":\"%@\",", [self
FormatNillOrNilOrnull:score_core_item.Itemid]]]
autorelease];
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingFormat:@"\"type\":\"%@\",", [self
FormatNillOrNilOrnull:score_core_item.type]]]
autorelease];
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingFormat:@"\"toJSONString\":\"%@\",", [self
FormatNillOrNilOrnull:score_core_item.toJSONString]]]
autorelease];
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingFormat:@"\"parseJSON\":\"%@\",", [self
FormatNillOrNilOrnull:score_core_item.parseJSON]]]
autorelease];
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingFormat:@"\"io\":\"%@\"", [self
FormatNillOrNilOrnull:score_core_item.io]]]
autorelease];

if(score_core_item == [coreItem.scoreValue
lastObject]){
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingString:@"}"]]
autorelease];
}
else {
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingString:@"},"]]
autorelease];
}
}
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingString:@"],"]]
autorelease];
}

nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingFormat:@"\"id\":\"%@\",", [self
FormatNillOrNilOrnull:coreItem.Itemid]]]
autorelease];
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingFormat:@"\"type\":\"%@\",", [self
FormatNillOrNilOrnull:coreItem.type]]]
autorelease];
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingFormat:@"\"toJSONString\":\"%@\",", [self
FormatNillOrNilOrnull:coreItem.toJSONString]]]
autorelease];
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingFormat:@"\"parseJSON\":\"%@\",", [self
FormatNillOrNilOrnull:coreItem.parseJSON]]]
autorelease];
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingFormat:@"\"io\":\"%@\"", [self
FormatNillOrNilOrnull:coreItem.io]]]
autorelease];

if(coreItem == [arr_core lastObject]){
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingString:@"}"]]
autorelease];
}
else {
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingString:@"},"]]
autorelease];
}
}
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingString:@"],"]]
autorelease];

//comments
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingFormat:@"\"comments\":\"%@\",", [self
FormatNillOrNilOrnull:stuNode.RTData.comments]]]
autorelease];
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingFormat:@"\"launchData\":\"%@\",", [self
FormatNillOrNilOrnull:stuNode.RTData.launchData]]]
autorelease];
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingFormat:@"\"suspendData\":\"%@\",", [self
FormatNillOrNilOrnull:stuNode.RTData.suspendData]]]
autorelease];
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingFormat:@"\"scoID\":\"%@\",", [self
FormatNillOrNilOrnull:stuNode.RTData.scoID]]]
autorelease];
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingFormat:@"\"scoType\":\"%@\",", [self
FormatNillOrNilOrnull:stuNode.RTData.scoType]]]
autorelease];
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingFormat:@"\"toJSONString\":\"%@\",", [self
FormatNillOrNilOrnull:stuNode.RTData.toJSONString]]]
autorelease];
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingFormat:@"\"parseJSON\":\"%@\",", [self
FormatNillOrNilOrnull:stuNode.RTData.parseJSON]]]
autorelease];

//cmiParL1

NSMutableArray *arr_cmiParL1 = stuNode.RTData.cmiParL1;
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingString:@"\"cmiParL1\":["]]
autorelease];

for(NSString *obj_cmiParL1
in arr_cmiParL1) {

if(obj_cmiParL1 == [arr_cmiParL1 lastObject]){
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingFormat:@"\"%@\"", obj_cmiParL1]]
autorelease];
}else {
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingFormat:@"\"%@\",", obj_cmiParL1]]
autorelease];
}
}
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingString:@"],"]]
autorelease];

//cmiParL2

NSMutableArray *arr_cmiParL2 = stuNode.RTData.cmiParL2;
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingString:@"\"cmiParL2\":["]]
autorelease];

for(NSString *obj_cmiParL2
in arr_cmiParL2) {

if(obj_cmiParL2 == [arr_cmiParL2 lastObject]){
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingFormat:@"\"%@\"", obj_cmiParL2]]
autorelease];
}else {
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingFormat:@"\"%@\",", obj_cmiParL2]]
autorelease];
}
}
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingString:@"],"]]
autorelease];

//launch_data
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingFormat:@"\"launch_data\":\"%@\",", [self
FormatNillOrNilOrnull:stuNode.RTData.launch_data]]]
autorelease];

//student_data

NSMutableArray *arr_student_data = stuNode.RTData.student_data;
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingString:@"\"student_data\":["]]
autorelease];

for(RTDataNodeCoreItem* coreItem
in arr_student_data) {
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingString:@"{"]]
autorelease];
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingFormat:@"\"value\":\"%@\",", [self
FormatNillOrNilOrnull:coreItem.value]]]
autorelease];
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingFormat:@"\"id\":\"%@\",", [self
FormatNillOrNilOrnull:coreItem.Itemid]]]
autorelease];
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingFormat:@"\"type\":\"%@\",", [self
FormatNillOrNilOrnull:coreItem.type]]]
autorelease];
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingFormat:@"\"toJSONString\":\"%@\",", [self
FormatNillOrNilOrnull:coreItem.toJSONString]]]
autorelease];
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingFormat:@"\"parseJSON\":\"%@\",", [self
FormatNillOrNilOrnull:coreItem.parseJSON]]]
autorelease];
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingFormat:@"\"io\":\"%@\"", [self
FormatNillOrNilOrnull:coreItem.io]]]
autorelease];
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingString:@"}"]]
autorelease];

}
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingString:@"],"]]
autorelease];

//suspend_data
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingFormat:@"\"suspend_data\":\"%@\"", [self
FormatNillOrNilOrnull:stuNode.RTData.suspend_data]]]
autorelease];
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingString:@"},"]]
autorelease];
}

nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingFormat:@"\"scoType\":\"%@\",", [self
FormatNillOrNilOrnull:stuNode.scoType]]]
autorelease];
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingFormat:@"\"toJSONString\":\"%@\",", [self
FormatNillOrNilOrnull:stuNode.toJSONString]]]
autorelease];

//items

NSLog(@"item:%@", stuNode.title);
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingString:@"\"items\":["]]
autorelease];

if(stuNode.items !=
nil) {

NSMutableArray *itemArray = stuNode.items;

for(StuNode *item
in itemArray){

if(item == [itemArray lastObject]){

NSAutoreleasePool *pool = [[NSAutoreleasePool
alloc] init];
nodeJsonString =[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingFormat:@"%@", [self
getStuJsonString:item]]] ;
[pool
drain];
}else {

NSAutoreleasePool *pool = [[NSAutoreleasePool
alloc] init];
nodeJsonString = [[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingFormat:@"%@", [self
getStuJsonString:item]]];
[pool
drain];

nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingString:@","]]
autorelease];
}
}
}
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingString:@"],"]]
autorelease];
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingFormat:@"\"parseJSON\":\"%@\"", [self
FormatNillOrNilOrnull:stuNode.parseJSON]]]
autorelease];
nodeJsonString = [[[NSString
alloc] initWithString:[nodeJsonString
stringByAppendingString:@"}"]]
autorelease];
}

return [nodeJsonString autorelease]; ;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: