传递NSArray作为参数?

时间:2010-01-04 15:07:18

标签: iphone objective-c iphone-sdk-3.0

我正在尝试从NSURLConnection委托中加载JSON数据,以将对象数组发送回调用它的tableview。

使用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];
}  

无法从这里访问数组,tableview我想获取信息,但是这个方法被称为

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

如果你有更好的方式去做这件事,那就非常受欢迎!!

2 个答案:

答案 0 :(得分:1)

returnArray可能是自动释放的。尝试在方法中保留/释放它。

如果是自动释放的,则内容将在您的运行循环中释放,因此在您想要访问它时就会消失。

答案 1 :(得分: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];