2010-01-04 152 views
0

我試圖讓從NSURLConnection委託加載對象數組返回給調用它的實現代碼如下JSON數據。傳遞一個NSArray作爲參數?

的委託對象與callback初始化傳送回

NSArray *returnArray; 
ResultsTableRoot *callback; 

JSON處理方法

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {  
    [connection release]; 

    NSString *responseString = [[NSString alloc] initWithData:responseData 
                encoding:NSUTF8StringEncoding]; 
    [responseData release]; 

    NSError *error; 
    SBJSON *json = [[[SBJSON alloc] init] autorelease]; 
    returnArray = [json objectWithString:responseString 
            error:&error]; 
    [responseString release]; 

    ////////////////////////////////////////////// 
    // Send data back to table view 
    [callback resultsArrayReciever:returnArray]; 
} 

的陣列不能從這裏訪問的實現代碼如下我想有信息,然而該方法被稱爲

-(void)resultsArrayReciever:(NSArray *)array { 
    // Code executed  
    if(array) { 
     // Code never executes, array isnt there 
    } 
} 

如果喲你有更好的方式去做這件事,它不僅僅是歡迎!

回答

0
  1. 檢查NSError實例以查看反序列化JSON時是否存在某些問題;
  2. 嘗試保留對象:

    NSError *error; 
    SBJSON *json = [[SBJSON new] autorelease]; 
    returnArray = [[json objectWithString:responseString error:&error] retain]; 
    [responseString release]; 
    [callback resultsArrayReciever:returnArray]; 
    [returnArray release]; 
    
1

returnArray可能是自動釋放。嘗試在你的方法中保留/釋放它。

如果它是自動發佈的,內容將在您的運行循環中發佈,因此在您訪問它時會消失。