我通过以下方式将XML加载到iPhone应用程序中:

NSArray *Images = [doc nodesForXPath:kName_logo error:nil];//Root node
for (CXMLElement *ImgIcons in Images)
{
    NSArray *locImage = [ImgIcons elementsForName:kName_image];
    for(CXMLElement *fullImage in locImage)
    {
        LocationImage = fullImage.stringValue;
        locStatImage = LocationImage;
        NSLog(@"Image Found %@",LocationImage);
        break;
    }
}


很好,它带给我正确的字符串

2011-11-03 14:48:43.572 Del Search[13152:f203] Image Found http://de1128/directenquirieswebapplicationv3.0/images/logos/PremierInn.jpg


但是,当我通过以下方式将其加载到我的表上时:

if (indexPath.section == 0)
    {
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifierImage];

        if (cell == nil)
        {
            cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifierImage] autorelease];
            UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0,0,320,180)];
            imageView.tag = 1;
            NSURL *Imageurl = [NSURL URLWithString:[NSString stringWithFormat:@"%@", locStatImage]];
            NSData *data = [NSData dataWithContentsOfURL:Imageurl];
            UIImage *img = [[[UIImage alloc] initWithData:data] autorelease];
            imageView.image = img;

            [cell addSubview:imageView];
            [imageView release];


        }
        return cell;
    }


该应用程序崩溃了。但是,如果我通过以下操作手动设置locStatImage:

locStatImage = @"http://de1128/directenquirieswebapplicationv3.0/images/logos/PremierInn.jpg";


它工作正常。设置locStatImage时我在做什么错?

谢谢

汤姆

最佳答案

假设上面的两个代码段来自不同的方法,则locStatImage可能会在从XML中获取和在cellForRowAtIndexPath方法中使用之间自动释放。

进一步假设locStatImage是保留属性(如果不是),则在第一个代码示例中应使用

self.locStatImage = ...

10-06 04:28