目前,我有一个类正在解析XML并将解析XML的字典发送到视图控制器。
以下是将字典发送到其他类的代码片段(其中“response”是字典):
if ([elementName isEqualToString:@"SessionData"])
{
// We reached the end of the XML document
// dumps dictionary into log
NSLog(@"Dump:%@", [response description]);
// sends dictionary to the VC
CardSetupViewController *setup = [[CardSetupViewController alloc]init];
setup.response = self.response;
//checks
NSLog(@"%@ lololololol", [setup.response description]); //THIS WORKS FINE!!
return;
}
此时,代码工作正常。那个NSLog标有//这个工作很精细!工作......显然。这是ViewController中的方法:
- (BOOL)authorize //this
{
AddCard *addCard = [[AddCard alloc]init];
ServerConnection *connection = [[ServerConnection alloc]init];
//XMLParser *xmlParser = [[XMLParser alloc]initXMLParser];
//serverReturn posts the data and is the ACTUAL server response in NSData form
NSData *serverReturn = [connection postData:[addCard textBoxToXml:
[self nameOnCardGet]:
[self ccNumGet]:
[self expMoGet]:
[self expYrGet]:
[self cvvGet]:
[self zipGet]:
[self nickNameGet]:
[self pinGet]]];
//This takes the information from the server and parses it to "response"
//Creates and inits NSXMLParser Object
NSXMLParser *nsXmlparser = [[NSXMLParser alloc] initWithData:serverReturn];
//Create and init our delegate
XMLParser *parser = [[XMLParser alloc] initXMLParser];
//set delegate
[nsXmlparser setDelegate:(id <NSXMLParserDelegate>) parser];
//initiates self.response THIS MAY NOT BE NEEDED
//response = [[NSMutableDictionary alloc]init];
//parsing
BOOL success = [nsXmlparser parse];
//error catch testing
if (success) {
NSLog(@"No errors");
}
else {
NSLog(@"Error parsing document!");
}
//dump
NSLog(@"ZOMG CHECK DIS OUT%@", [response description]);
return NO;
}
基本上,声明“ZOMG CHECK DIS OUT”的NSLog正在返回(null),我无法弄清楚原因。没有编译错误,它也是属性/综合。有什么想法吗?
提前致谢。哦,请原谅我的NSLog评论。我不得不区别于代码的不同部分,我心情很好。
编辑:我正在使用自动参考计数。别担心,什么都没有泄漏。
答案 0 :(得分:1)
在第一个代码块中,生成CardSetupViewController
然后泄漏它。它与运行第二个代码块的任何对象无关。我假设您的第二个视图控制器来自您的NIB?
请注意,您还在泄露NSXMLParser
。
答案 1 :(得分:0)
你的[response description]
,无论是什么,都可能是一个自动释放的对象,在ZOMG CHECK DIS OUT之前被释放。保留它,看看是否有效。完成后不要忘记释放它。