词典获得发布?

时间:2011-07-06 21:50:14

标签: iphone objective-c xcode

目前,我有一个类正在解析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评论。我不得不区别于代码的不同部分,我心情很好。

编辑:我正在使用自动参考计数。别担心,什么都没有泄漏。

2 个答案:

答案 0 :(得分:1)

在第一个代码块中,生成CardSetupViewController然后泄漏它。它与运行第二个代码块的任何对象无关。我假设您的第二个视图控制器来自您的NIB?

请注意,您还在泄露NSXMLParser

答案 1 :(得分:0)

你的[response description],无论是什么,都可能是一个自动释放的对象,在ZOMG CHECK DIS OUT之前被释放。保留它,看看是否有效。完成后不要忘记释放它。