2011-07-06 50 views
1

目前,我有一個解析XML並將XML解析到的字典發送給視圖控制器的類。詞典釋放?

這裏是發送詞典到其它類的代碼的一個片段(其中「響應」是字典):

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標記有//這個作品很好!工作......顯然。這是在視圖控制器的方法:

- (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 OUT DIS」將返回(NULL),我想不通爲什麼NSLog的。沒有編譯錯誤,它也是一個屬性/合成。有任何想法嗎?

在此先感謝。哦,請原諒我的NSLog評論。我不得不區分代碼的不同部分,我心情很好。

編輯:我正在使用自動引用計數。別擔心,沒有任何泄漏。

+1

你說第二個代碼片段來自你的CardSetupViewController,但它看起來像它有處理你的XML的大部分邏輯?請從這個控制器發佈更完整的代碼,因爲除了我以前的觀點外,也沒有關於如何初始化響應對象的說明。 – Perception

+0

我已經爲第二部分添加了完整的方法。 – Baub

+0

出於好奇,如果使用'[self.response description]',結果是否相同? – nil

回答

1

在您的第一個代碼塊中,您生成CardSetupViewController然後泄漏它。它與運行第二個代碼塊的任何對象無關。我假設你的第二個視圖控制器來自你的NIB?

請注意,您也在泄漏您的NSXMLParser

+0

它沒有泄漏,這只是代碼片段,而不是整個班級。 – Baub

+0

這也不太可能發生泄漏,因爲他說他正在使用自動引用計數(雖然他只是在評論中提到它)。 – nil

+0

這^。對不起,我會把它扔在上面。 – Baub

0

您的[response description],不管是什麼,可能是在ZOMG CHECK DIS OUT之前釋放的自動釋放對象。保留它,看看是否有效。當你完成它時,不要忘記釋放它。

+0

Xcode不允許我使用保留拋出「保留」不可用的錯誤:在自動引用計數模式下不可用「 – Baub

+0

好的,這意味着您正在運行iOS 5 Beta版,該版仍在NDA下。對於您的問題,更好的地方可能是Apple Dev論壇。 – fzwo

+1

@fzwo:據我所知,他沒有使用任何NDA功能,所以我不認爲這是必然的。 ARC作爲LLVM的一部分公開發布。 – Chuck