奇怪的是我在任何地方找不到任何关于这个主题的内容。
基本上,我有一个简单的UITableView,比方说,10行。每行都有一个与之关联的用户,每个用户都有一个“个人资料图片”。现在假设每行由2个用户中的1个创建,因此它将在每个行中显示2个不同的配置文件图片中的1个。
我正在尝试提高内存效率,因此我不想在新的UIImageView中加载相同的图像5次。所以我尝试在同一个用户的每一行中使用完全相同的UIImageView引用,但似乎只有最后一行才能加载显示ImageView。例如,如果屏幕外的行变得可见并重新加载,则该行将显示该行,并从之前出现的行中消失。
所以我的问题是,我该怎么做?
一个。解决我正在尝试做的事情/我缺少的事情
B中。如果我在新的UIImageView中使用它,IOS不会将相同的图像加载到内存中,所以我只是在浪费时间担心这个
℃。一个令我震惊的新解决方案
谢谢!
史蒂夫
*注意,我在Xamarin / Mono中构建这个,但我不认为C#vs Objective C会在这种情况下产生影响
答案 0 :(得分:2)
UIImage
有一个内置缓存,因此选项B很可能是您的解决方案。由于此缓存,可能不需要在每个UIImage
中保留一个UIImageView
实例。虽然这种方法可能会略微加快您的申请速度,但更有可能是premature optimization。
此外,UITableView
经过高度优化,可以重复使用移出屏幕的细胞,因此您只有UIImageView
个UITableViewCell
个实例可见UIView
。
您的问题是由于Dim Shell As Object: Set Shell = CreateObject("WScript.Shell")
Dim oFSO As Object: Set oFSO = CreateObject("Scripting.FileSystemObject")
Dim objExcel As Application: Set objExcel = CreateObject("Excel.Application")
Dim myworkbook As Workbook, worksheetcount As Long
Set myworkbook = objExcel.Workbooks.Open("C:\Temp\Test.xlsx")
On Error Resume Next
worksheetcount = myworkbook.Worksheets.Count
If Err.Number <> 0 Then
ShowError
myworkbook.Close False
End If
s一次最多只能有一个超级视图。因此,每次将单个实例添加到单元格时,它都会从前一个单元格中删除。这就是为什么你只在最后一个单元格上看到它的原因。
答案 1 :(得分:0)
我认为你误解了iOS如何绘制图像。您将需要在显示图像的每个位置创建多个UIImageViews
,但您可以(并且应该)重用您的UIImage
对象,这就是真正消耗内存的内容。
因此,在cellForRowAtIndexPath
方法中,只需创建一个imageView并将其设置为您已加载的图像。
重复使用图片,而不是imageViews。