将 uiimage 设置为 nil 不会使用 ARC 释放内存

2023-12-03

我有一个滚动视图,它在页面滚动时显示不同的图像,例如 PhotoScroller。我正在使用ARC。当有人滚动到另一个页面时,我将当前未显示的 UIImageView 的图像属性设置为 nil,作为(尝试)避免内存崩溃,这种情况仍在发生。然后,当用户滚动到新页面时,该页面的图像以及其之前和之后的页面都将设置为 UIImageView 的图像属性(以便平滑查看)。页面的 UIImage 全部保存在一个数组中。然而,当我滚动页面时,内存使用量不断增加,就像设置 UIImageView 的image将属性设置为 nil 并不会从内存中释放它。我用initWithContentsOfFile初始化我的 UIImages。我尝试过imageNamed and imageWithContentsOfFile也没有运气。这是我的滚动视图代码:

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
int indexShown = self.scrollView.bounds.origin.x / kScrollObjWidth;

for(NSNumber *index in indexesToRemove)
{
    UIImageView *imgViewToRemove = [[self.scrollView subviews] objectAtIndex:[index intValue]];
    imgViewToRemove.image = nil;
}
[indexesToRemove removeAllObjects];

UIImageView *imgViewToReplace = [[self.scrollView subviews] objectAtIndex:indexShown];
[imgViewToReplace setImage:[pageUIImagesArr objectAtIndex:indexShown]];
[indexesToRemove addObject:[NSNumber numberWithInt:indexShown]];

if(indexShown != 0 && ![[[self.scrollView subviews] objectAtIndex:indexShown-1] image])
{
    imgViewToReplace = [[self.scrollView subviews] objectAtIndex:indexShown-1];
    [imgViewToReplace setImage:[pageUIImagesArr objectAtIndex:indexShown-1]];
    [indexesToRemove addObject:[NSNumber numberWithInt:indexShown-1]];
}
if(indexShown != kNumImages-1 && ![[[self.scrollView subviews] objectAtIndex:indexShown+1] image])
{
    imgViewToReplace = [[self.scrollView subviews] objectAtIndex:indexShown+1];
    [imgViewToReplace setImage:[pageUIImagesArr objectAtIndex:indexShown+1]];
    [indexesToRemove addObject:[NSNumber numberWithInt:indexShown+1]];
}

currentView = [[self.scrollView subviews] objectAtIndex:indexShown];
//check which view is being shown`

页面的 UIImage 全部保存在一个数组中。

The UIImage当您设置时,不会被释放UIImageView的财产为nil因为数组仍然保留对它们的引用。至于内存增长,可能是分配了其他东西。我建议使用 Instrument 的对象分配工具来跟踪滚动时到底增长了什么。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 uiimage 设置为 nil 不会使用 ARC 释放内存 的相关文章

  • 在 UICollectionView 下面插入子视图

    当我在 UICollectionView 下方添加子视图时 有时子视图会显示在 UICollectionView 单元格上方 这是子视图插入代码 self collectionView insertSubview self garmentV
  • UITableView 无法一直滚动到底部[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我只是好奇 我做了一些UITable
  • 如何让应用更新以吸引人的屏幕形式提供给用户? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我最近在使用 Make My Trip 应用程序 我发现每当我启动应用程序时都会出现一个非常有吸引力的应用程序更新弹出屏幕 它说要更新应用程
  • iOS 视频压缩 Swift iOS 8 损坏的视频文件

    我正在尝试压缩用户相机从 UIImagePickerController 拍摄的视频 不是现有视频 而是动态视频 以上传到我的服务器 并花费少量时间来完成此操作 因此较小的尺寸是理想的选择 而不是 30 较新质量的相机为 45 mb 这是在
  • prepareForSegue 和 PerformSegueWithIdentifier 发送方

    我想知道标题中的函数如何工作以及发送者参数 假设单击按钮调用了performSegue方法 那么这是否也调用了prepareSegue方法 是否在performSegue方法之前但在按下按钮之后调用prepareSegue方法 另外 这两个
  • 领域数据库对象看起来是空的,但实际上不是

    我在用Realm https realm io对于一个小而简单的项目 我正在使用最新版本的框架 昨天从 Github 编译 和当前 AppStore 版本的 Xcode with Swift 2 1 我正在通过 segue 将 Realm
  • 自定义 OpenVPN iOS 客户端 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在开发一个自定义 iOS OpenVPN 客户端 我找到了这个原生 OpenVPN 客户端核心源码https staging op
  • 了解 React Native 中的默认字体大小

    在过去的几个月里 我一直在开发一个 React Native 应用程序 但有些事情总是让我困惑 而我现在正试图弄清楚它的真相 我正在尝试标准化应用程序中的字体大小 正文 标题等 并且正在努力了解 React Native 究竟从哪里获取默认
  • 使用 iPhone 控制蓝牙音频设备

    我正在寻找为 iPhone 编写应用程序 它将能够控制汽车中的收音机和 CD 播放器 收音机和播放器具有可用的蓝牙连接 我开始这个问题是为了获得这个地方所需的所有信息 我有几个问题 但如果您发现任何我没有要求的对我开始开发此应用程序不重要的
  • 如何将图像转换为 UIImage?

    如何转换 SwiftUIImage to a UIImage let image Image systemName circle fill let UIImage image as UIImage 没有直接的方法将 Image 转换为 UI
  • 从 plist 文件中解码数据

    我丢失了在 Macbook Air 上用 Textwrangler 编写的文本文件中的一些数据 我在扩展名为 plist 的文件中找到了其中一些 文件是用 xml 编写的 如下所示
  • 将 UIRefreshControl 用于 UIWebView

    我在 iOS 6 中看到了 UIRefreshControl 我的问题是是否可以通过下拉来刷新 WebView 而不是像在邮件中那样让它弹出 我使用 rabih 的代码是 WebView UIRefreshControl refreshCo
  • Swift 3 中数组的 indexOf(_:) 方法的替换

    在我的项目 用 Swift 3 编写 中 我想使用从数组中检索元素的索引indexOf 方法 存在于 Swift 2 2 中 但我找不到任何替代方法 Swift 3 中是否有任何好的替代方法或类似的方法 Update 我忘记提及我想在自定义
  • 如何将 CIFilter 输出到相机视图?

    我刚刚开始使用 Objective C 我正在尝试创建一个简单的应用程序 它显示带有模糊效果的相机视图 我得到了与 AVFoundation 框架一起使用的相机输出 现在 我正在尝试连接 Core 图像框架 但不知道如何连接 Apple 文
  • ExpandableLabel iOS 中的“少看”

    我正在使用第三方库可扩展标签 https github com apploft ExpandableLabel实施一个see more特征 我正在寻找仅快速的解决方案 其中包含标签中的文本而不是按钮中的文本 因此这可以完美地工作 添加库并更
  • 如何避免 NSNumberFormatter 中的四舍五入

    我试图拥有一个最大精度为 2 位小数的数字字符串 而其余小数只是被修剪掉而不是四舍五入 例如 I have 123456 9964 I want 123456 99 gt Just want to trim rest of the deci
  • 调用了 numberOfRowsInSection 但未调用 cellForRowAtIndexPath

    在我的表视图中节中的行数被调用两次但是cellForRowAtIndexPath不叫 我想在 tableView 中显示 Facebook 好友列表 如果 cellForRowAtIndexPath 调用我的问题就解决了 我在这里的数组中得
  • 禁用 iPhone 4S / 新 iPad 键盘上的听写按钮

    我们的应用程序是一个医疗保健应用程序 我们的应用程序中有一个符合 HIPAA 标准的语音识别器 所有听写都可以通过它进行 医院不希望医生意外开始与不符合 HIPAA 标准的 Nuance Dragon 服务器进行对话 因此 我正在寻找可以抑
  • 如何在运行仅 iPhone 应用程序(非通用)的 iPad 上的 UIPickerView 中支持 VoiceOver?

    一般来说 我会查看 Apple 的 UICatalog 示例代码以获取基本的 VoiceOver 支持 但示例代码中似乎有对 UIPickerViews 的 VoiceOver 支持 我是否需要在某处提供accessibilityLabel
  • 防止点击 MKAnnotation 时检测到 MKMapView 上的触摸事件

    我有一个 UITapGestureRecognizer 当用户点击地图时 它将在我的 MKMap 上隐藏和显示工具栏 简单 但是 当用户点击 MKMapAnnotation 时 我不希望地图以正常方式响应点击 如上所述 此外 当用户点击地图

随机推荐

  • VB.NET 中令人困惑的逻辑运算符

    我正在使用用 VB 编写的遗留代码库 并且遇到了一个我不理解的条件运算符 并且无法弄清楚要搜索什么来解决它 我正在处理的是以下代码和结果为 true 的变量 我不明白的具体部分是 1 第一个之间的关系X和第一个括号 2 2 的作用X lt
  • jq:传递不带引号的字符串参数

    我想传递一个不带引号的参数 JQ arg 默认情况下有双引号 因为它应该用作过滤器 例如 propt properties final jq r c arg p propt p sample json echo final 样本 json
  • Scala 柯里化与部分应用函数

    我意识到这里有几个问题what柯里化和部分应用函数是 但我问的是它们有何不同 作为一个简单的例子 下面是一个用于查找偶数的柯里化函数 def filter xs List Int p Int gt Boolean List Int if x
  • AS3 - 如何使用鼠标事件的像素/点检测而不是对象检测

    这看起来应该很容易 我都不好意思问 但我就是不明白 我有一个大的圆形 MovieClip 用作按钮 该影片剪辑包含具有透明背景的PNG插入到影片剪辑中 由于其尺寸 四个角 边界框 上有较大的空白注册区域 如何让鼠标注册为仅位于圆形像素上方
  • 我需要在 ASP.Net core Web API 的验证属性中返回自定义的验证结果(响应)

    我需要在 ASP Net core Web API 中返回自定义的验证结果 响应 失效属性 这是我创建的 ValidationAttribute class MaxResultsAttribute ValidationAttribute p
  • 如何单独更改按钮 pygame 上文本的不透明度?

    我下面有以下代码 它是从另一篇文章中获取的按钮的类 我想知道是否可以更改按钮背景的不透明度而不更改其上文本的不透明度 我怎样才能实现这个目标 Code import pygame pygame init font pygame font S
  • 如何读取 zip 存档中的单个文件

    我需要读取 zip 文件内的单个文件 test txt 的内容 整个 zip 文件是一个非常大的文件 2GB 并且包含很多文件 10 000 000 因此提取整个文件对我来说不是一个可行的解决方案 如何读取单个文件 尝试使用zip wrap
  • 使用 css 在 上设置强制宽度,该宽度位于 下,使用 colspan 而不使用 colgroup

    我想设置宽度td in tbody在下面thead th有一个colspan 2 具有硬定义的列宽 以 为单位 如果单元格内容超出 浏览器外壳不会动态调整表格宽度 sample width 100 table layout fixed sa
  • 如何在 CakePHP 2.0 中发送带有附件的电子邮件?

    我正在尝试使用 CakePHP 2 0 发送一封带有附件的电子邮件 该文件由用户通过表单提交 到目前为止我有 App uses CakeEmail Network Email email new CakeEmail email gt att
  • 使用 handler.postDelayed 获取剩余时间

    我在用handler postDelayed为某些动画内容创建一些延迟的方法 像这样 Handler h new Handler h postDelayed new Runnable Override public void run Sta
  • 如何在 foreach 循环中删除 xmlnode?

    在下面的代码中 我使用 foreach 循环来检查节点列表中的每个节点并删除其中的一些节点 删除一个节点后 foreach 循环抛出以下错误 元素列表已更改 枚举操作无法继续 我怎样才能避免它 public static XmlNodeLi
  • 在C中使用紧凑指针寻址二维数组的元素[关闭]

    Closed 这个问题需要调试细节 目前不接受答案 我正在使用 C 实现莫尔斯电码并遇到一些基础知识 基本思想是我有 A 到 Z 的二维字符数组 每个数组的第一个元素是一个字母表 后跟相应的莫尔斯电码 程序将接收一个字符 一旦找到匹配项 该
  • Hadoop 类型与映射预期值中的键不匹配文本收到的值 LongWritable

    有人知道为什么我会收到此错误吗 我看过很多其他类似的帖子 但其中大多数不适用于我 我也尝试了发布的一些确实适用于我的解决方案 但它们不起作用 我确信我只是错过了一些愚蠢的东西 谢谢您的帮助 chris chrisUHadoop usr lo
  • 将按类别分类的行添加到我的数据框中

    我使用 groupby 创建了一个新的聚合数据框 但在每个类别下添加小计行时遇到问题 我尝试过使用 pd groupby 和数据透视表并更改索引 但我无法按照我想要的方式表示数据 为每个 客户 创建 USD Balance 小计 但将其添加
  • 如何使可调用的谷歌云函数幂等

    我有一个谷歌云功能 可以向 firebase 主题发送通知 该功能一直工作正常 直到突然 它开始同时发送多个通知 2 或 3 联系 Firebase 支持团队后 他们告诉我我应该使函数幂等 但我不知道如何 因为它是一个可调用函数 更多细节
  • 将新的 APNS 证书上传到 GCM

    我们有一个使用 GCM 的 iOS 和 Android 应用程序 我正在尝试将新的生产 APNS 证书上传到 GCM 但无法上传 因为 Google 正在将 GCM 迁移到 Firebase 我怎么做 这是 Google 开发者产品的屏幕截
  • 自动标记 C 中未使用的结构成员

    我需要一个工具来自动标记未使用的结构成员在 C 代码库中 我对 未使用 的定义很简单 如果从代码中删除结构成员定义 并且代码编译成功 则该结构成员被声明为未使用 问题是 如何以自动化方式完成此操作 由于代码库很小 速度并不是太重要 关于该主
  • Marionette.js appRouter 在应用程序启动时未触发

    我目前正在将 Marionette 集成到现有的 Backbone 应用程序中 我已经有一个现有的 Backbone 路由器 但我正在尝试实现 Marionette AppRouter 来取代它 问题是 在新 Marionette 路由器应
  • 调试 Qt 源代码

    是否可以进入 Qt 源 例如qmainwindow cpp 在 Qt Creator 中 目前我正在看到反汇编 但如果能看到源代码就好了 当然 但你可能必须首先 转到 QT HOME qt 使用 debug 或 debug and rele
  • 将 uiimage 设置为 nil 不会使用 ARC 释放内存

    我有一个滚动视图 它在页面滚动时显示不同的图像 例如 PhotoScroller 我正在使用ARC 当有人滚动到另一个页面时 我将当前未显示的 UIImageView 的图像属性设置为 nil 作为 尝试 避免内存崩溃 这种情况仍在发生 然