创建网页并异步加载应用数据

时间:2016-10-23 06:47:39

标签: ios swift asynchronous memory-management swift3

我在Swift中使用Xcode。

我的问题

是否可以创建自己的网页(最好是免费的,如wordpress)来加载图片/内容?我该怎么做?这会修复我应用的当前内存(RAM)问题吗?

我的问题(更详细)

我创建了一个应用程序,可以加载数百张图片供用户查看。每张图片都是一个类的对象,其中包含有关图像的重要信息。因此,我拥有"资产"中的所有图像。文件夹,并使用"命名"将它们与相应的类对象相关联;而不是" contentsOfFile。"然而,因为有很多图像被加载,在滚动了几百个图像后,应用程序因完全内存而崩溃。显然(根据我所读过的)图像是缓存的,如果你通过URL加载它们,那么它们不被缓存或清除缓存的唯一方法就是它。

我的希望

理想情况下,我希望能够更新网页,以便自动更新我的应用内容(添加/更改图像及其相关数据)。每个对象都包含图像的图像和数据,对我来说这个数据保持与图像的连接非常重要。至少我希望能够使用我的应用程序代码直接从网页上提取图像,以防止崩溃。

如果可以在不重写我用来创建每个单独对象的数百行代码的情况下执行此操作,那将是理想的选择。是否可以将创建每个类对象的代码放在网页上并让我的应用程序从页面中读取它并创建对象?这会解决我的问题吗?

如果有人能够提供关于如何做这样的事情的详细指南或指导我预先存在的那些,我将非常感激,因为我目前找不到一个。

编辑:请求了一些代码,我无法在评论中正确格式化。

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {


        // get a reference to our storyboard cell
        let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! MyCollectionViewCell

        // Use the outlet in our custom class to get a reference to the UILabel in the cell
        cell.imageView.image = cardsToDisplay[indexPath.item].image
        cell.layoutIfNeeded()
        return cell
    }

2 个答案:

答案 0 :(得分:1)

使用contentsOfFile - 图片不会被缓存。

至于从网上加载它们 - 它不会解决您的问题,因为它会导致糟糕(甚至最差)的用户体验。图像将缓慢加载(与从磁盘加载图像相比)。您可以通过将它们缓存为本地文件来解决此问题,但是您应该再次使用contentsOfFile以便不将它们缓存在内存中。因此,从网络加载图像是没用的。

答案 1 :(得分:0)

你想要的东西就像google firebase数据库,然后你可以在每次用户在wifi区域打开应用程序时下载所有最新数据。使用Firebase存储似乎也可以降低RAM。查看firebase和类似服务。