导致内存问题的PFImageView(iOS SDK 8.2 + Parse)

时间:2015-03-19 07:20:30

标签: ios objective-c parse-platform

Backstory:我正在创建一个iOS应用程序,将Parse后端的数据加载到tinder风格的卡片上。数据包括图像。我正在使用这张卡片:https://github.com/cwRichardKim/TinderSimpleSwipeCards

当应用程序首次启动时,它从数据库中提取5行并将一些卡加载到NSMutableArray中。每次向左或向右滑动卡片时,都会向该阵列添加另一张卡片。

它工作正常,但是一旦打开图像,一切都会崩溃。内存使用情况不在图表中,应用程序很快崩溃。这是图像加载的样子: Xcode Memory Debugger - 每个尖峰来自刷卡并加载图像:http://i.stack.imgur.com/ZN8kp.png

当我注释掉图像代码时,它运行正常,没有内存问题。

问题似乎是: 1)我是如何装卡的 2)我如何删除卡

我正在加载这样的卡片:

- (void)setupPhoto
{
    NSString *itemId = productId;
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"itemId = %@",itemId];
    NSLog(@"itemId: %@",itemId);
    //now let's set up the query:
    PFQuery *query = [PFQuery queryWithClassName:@"dailyItems" predicate:predicate];
    [query getFirstObjectInBackgroundWithBlock:^(PFObject *object, NSError *error) {
        PFFile *itemFile = [object objectForKey:@"itemImage"];
        productPhoto.file = itemFile;
        [productPhoto loadInBackground];
    }];
}

操作实例:

  1. 获取该项目的ID。这与Parse后端中的行相对应。
  2. 使用谓词查询以匹配该项目的ID
  3. 在后台,抓住代表后端图片的PFFile
  4. productPhoto是PFImageView,因此我可以将文件设置为PFFile
  5. 调用loadInBackground来获取实际图像
  6. 当我取出卡片时,我只想说:

    [card removeFromSuperview];
    

    我需要做些什么来控制记忆?

    非常感谢你!

0 个答案:

没有答案