2010-01-04 110 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可能是自动释放。尝试在你的方法中保留/释放它。

如果它是自动发布的,内容将在您的运行循环中发布,因此在您访问它时会消失。