【发布时间】:2016-10-23 06:47:39
【问题描述】:
我正在使用 Xcode 和 Swift。
我的问题
是否可以创建自己的网页(最好是免费的,如 wordpress)来加载图像/内容?我该怎么做?这会解决我的应用程序当前的内存 (RAM) 问题吗?
我的问题(更详细)
我创建了一个应用程序,它可以加载数百张图片供用户查看。每张图片都是包含有关图像的重要信息的类的对象。因此,我在“assets”文件夹中拥有所有图像,并使用“named”而不是“contentsOfFile”将它们与适当的类对象相关联。但是,由于加载了太多图像,因此在滚动了数百张图像后,应用程序由于内存已满而崩溃。显然(根据我的阅读)图像已被缓存,并且它们不被缓存或清除缓存的唯一方法是通过 URL 加载它们。
我的希望
理想情况下,我希望能够更新网页,以便自动更新我的应用程序中的内容(添加/更改图像及其相关数据)。每个对象都包含图像和图像数据,对我来说重要的是这些数据与图像保持连接。至少我希望能够直接使用我的应用程序代码从网页中提取图像以防止崩溃。
如果可以在不重写我用来创建每个单独对象的数百行代码的情况下做到这一点,那将是理想的。我是否可以将创建每个类对象的代码放在网页上,让我的应用程序从页面中读取它并创建对象?这能解决我的问题吗?
如果有人可以向我提供有关如何执行此类操作的详细指南或将我引导至已有的指南,我将非常感激,因为我目前找不到。
编辑:请求了一些代码,但我无法在 cmets 中正确格式化。
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
}
【问题讨论】:
-
就您的内存问题而言。我会考虑使用
weak引用声明您的图像对象。 -
@Danoram 我相信如果你不另说,他们默认是弱的,但如果我错了,请纠正我
-
@Danoram 只是尝试将它们全部更改为弱,这反而使应用程序在到达适当的屏幕时崩溃
-
有趣。我们必须更深入!与此同时,是的,我们不要做弱变量大声笑
-
@Danoram 在这一点上,我希望得到任何可以解决我列出的任何问题的东西。虽然我不知道如何让更多人看到这个问题
标签: ios swift asynchronous memory-management swift3