为什么我的NSMutableArray在UITableView中取消分配

为什么我的NSMutableArray在UITableView中取消分配,uitableview,nsmutablearray,Uitableview,Nsmutablearray,我的NSMutableArray似乎正在发布,我不知道在哪里,以下是我的代码: - (void)awakeFromNib { arrayOfData = [[NSMutableArray alloc] initWithCapacity:0]; [arrayOfData addObject:@"test"]; NSLog(@"array: %@", arrayOfData); } 这里一切都好 然后我创建一个UITable并将其添加到视图中,然后我请求一些数据,一切正常

我的NSMutableArray似乎正在发布,我不知道在哪里,以下是我的代码:

- (void)awakeFromNib {

arrayOfData = [[NSMutableArray alloc] initWithCapacity:0];
[arrayOfData addObject:@"test"];

NSLog(@"array: %@", arrayOfData); 

}
这里一切都好

然后我创建一个UITable并将其添加到视图中,然后我请求一些数据,一切正常

        arrayOfData = [response objectForKey:@"results"];
        NSLog(@"count: %i", [arrayOfData count]);
        NSLog(@"success!");
        numberOfRows = [arrayOfData count];
        [self.myTableView reloadData];
创建行数也很好:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

NSLog(@"test: %i", numberOfRows);
return numberOfRows;

}
现在,访问我的数组时,会在该行获得一条“发送到解除分配实例的消息”

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *MyIdentifier = @"MyIdentifier";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];

if (cell == nil)
{
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
                                   reuseIdentifier:MyIdentifier] autorelease];
}


   // crashes here!
NSLog(@"array: %i", [arrayOfData count]);

if (numberOfRows){

    NSString *filename = [[arrayOfData objectAtIndex:indexPath.row] objectForKey:@"filename"];
    NSString *url  = [NSString stringWithFormat: @"http://www.web.com/dir/%@", filename];  
    [cell.imageView setImageWithURL:[NSURL URLWithString:url]
                   placeholderImage:[UIImage imageNamed:@"placeholder.png"]];

    cell.textLabel.text = @"My Text";
}

return cell;
}

我的标题中也有这个,我还使用了@synthesis

@property (nonatomic, retain) NSMutableArray *arrayOfData;

任何帮助都将不胜感激

看起来您正在使用以下行重新分配
arrayOfData

arrayOfData = [response objectForKey:@"results"];
如果这是您想要的,请尝试以下方法:

arrayOfData = [[response objectForKey:@"results"] retain];

看起来您正在使用此行重新分配
arrayOfData

arrayOfData = [response objectForKey:@"results"];
如果这是您想要的,请尝试以下方法:

arrayOfData = [[response objectForKey:@"results"] retain];

啊,是的,这就是问题所在。我的问题是,如果我重新分配它,为什么它会被释放?当“回应”被释放时它会释放吗?这是一种可能性。我不知道这些类做什么,但也有可能[response objectForKey:@“results”]返回一个自动释放的对象。你让我很开心。:)我现在只想知道是保留数组还是调用'arrayOfData=[NSMutableArray initWithArray:[response objectForKey:@“results”];我想保留它很好,并且可以节省一点内存。啊,是的,这就是问题所在。我的问题是,如果我重新分配它,为什么它会被释放?当“回应”被释放时它会释放吗?这是一种可能性。我不知道这些类做什么,但也有可能[response objectForKey:@“results”]返回一个自动释放的对象。你让我很开心。:)我现在只想知道是保留数组还是调用'arrayOfData=[NSMutableArray initWithArray:[response objectForKey:@“results”];我想保留它很好,可以节省一点内存。