在 Swift 中使用 UIAlertController 发生内存泄漏

2024-03-26

我使用这个简单的代码呈现一个简单的 UIViewController

@IBAction func addNewFeed(sender: UIBarButtonItem)
{

    var alertView: UIAlertController? = UIAlertController(title: NSLocalizedString("New Feed", comment: "Titolo popup creazione feed"),
        message: NSLocalizedString("Insert the Title and the Link for the new Feed.", comment: "Messaggio creazione nuovo feed"),
        preferredStyle: UIAlertControllerStyle.Alert)


    alertView!.addAction(UIAlertAction(title: NSLocalizedString("Cancel", comment: "Annulla popup creazione nuovo feed"),
        style: UIAlertActionStyle.Cancel,
        handler: nil))

    presentViewController(alertView!, animated: true, completion: nil)

}

当我按下界面上的按钮时,我调用此 IBAction 并出现 UIAlertController。但是,当我单击“取消”按钮关闭控制器时,泄漏工具发现了泄漏,如下图所示:

我尝试在处理程序参数中放置这样的闭包:

alertView!.addAction(UIAlertAction(title: NSLocalizedString("Cancel", comment: "Annulla popup creazione nuovo feed"),
        style: UIAlertActionStyle.Cancel,
        handler: {[weak self] action in self!.dismissViewControllerAnimated(true, completion: nil)
        alertView = nil
        }))

但总是有这种泄漏。


UIViewController有很多陷阱可以掉进去。

Ash Furrow 在此解决了许多内存问题博客文章 http://ashfurrow.com/blog/uialertviewcontroller-example/。他尝试了weak self,但最终决定使用一个局部变量,然后在闭包中使用该变量。

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

在 Swift 中使用 UIAlertController 发生内存泄漏 的相关文章

  • Swift 将十进制坐标转换为度、分、秒、方向

    我怎样才能将其转换为快速 我最好的猜测是所有 int 都变成了 var 删除所有导致 的 此外 如果有的话可以给我指出一个很好的来源来了解事物如何转换 那就太好了 NSString coordinateString int latSecon
  • Swift 从照片库中获取视频的 NSData

    我使用 UIImagePickerController 从我的库中选择视频 我需要提取视频文件的 NSData 我使用以下操作从我的库中选择视频 但我的数据似乎为零 但是我的 AVPlayer 播放生成的 NSURL 中的视频 所以我知道问
  • 制作一个固定大小的 UIView,如 UISwitch(使用 IBDesignable)

    当我使用时本指南 http iphonedev tv blog 2014 12 15 create an ibdesignable uiview subclass with code from an xib file in xcode 6要
  • CBPeripheralManager 连接回调

    我正在尝试在两个 iOS 设备之间建立蓝牙连接 这个想法是 一个设备提供一项服务 多个设备连接到该服务 设备 A 服务 用户滑动浏览演示文稿 设备 B 多个客户端 用户观看演示 无交互 根据我的理解 提供服务的人应该通过创建 CBPerip
  • 既然 Gradle 和 Maven 都弃用了 http,如何使用 Liferay Mobile SDK 6.2.18 生成 jar 库?

    在我当前的项目中 我们正在维护 开发使用客户网站 liferay 6 2 服务的移动 android iOS 应用程序 每当后端的人员生成新服务 或者只是将现有服务更新为具有新功能的新版本 时 我们需要使用 Liferay Mobile S
  • 以编程方式显示 UIView

    我试图 通过动画 显示 UIView 具体来说 我想显示视图的中心部分 然后慢慢地显示它的外边缘 有点像拉开窗帘 我的第一次尝试是简单地将边界矩形设置得更小 并将其动画化为视图框架的完整大小 但这没有达到预期的效果 因为通过更改边界 我也更
  • UIButton 未出现在 iPhone 5S 上

    总的来说 我对 iOS 开发和开发还很陌生 我一直在开发时间 记录保存应用程序 但遇到了一个奇怪的问题 在我的一个视图控制器上 我有一个 UITableView 每个单元格都是一个按钮 可通往不同的视图控制器 在第一个单元格上 用户应该能够
  • SwiftUI TabbedView 仅显示第一个选项卡的内容

    我正在尝试建立一个TabbedView使用以下简单代码 TabbedView Text Hello world tabItemLabel Text Hello Text Foo bar tabItemLabel Text Foo 运行时 两
  • NSAttributedString 和表情符号:位置和长度问题

    我正在使用 NSAttributedString 对来自 API 的文本的某些部分 如 Twitter 上的 mention 进行着色 API 为我提供了文本和代表文本中应着色的部分 或链接 标签等 的实体数组 但有时 颜色会因为表情符号而
  • 如何使用 Unicode 十六进制值 (UTF-16) 在 Swift 中表达字符串

    我想在 Swift 中使用十六进制值编写 Unicode 字符串 我已阅读文档 https developer apple com library prerelease ios documentation Swift Conceptual
  • 当应用程序名称在 InfoPlist.strings 中本地化时,不同的应用程序名称取决于配置

    我们为每个配置使用具有不同 plist 的设置 像这样 目标 Info Dev plist 目标 Info Beta plist 这样我们的配置就可以拥有自己的 CFBundleDisplayName 并且我们可以通过设备上的应用程序名称来
  • 从 ios 和 android 端连接到 xmpp 时获取所有群组消息

    我在用开放火版本 4 0 1 使用开火Rest Api https github com gidkom php openfire restapi我在服务 servicename xx xx xxx xxx 中创建了群聊室 现在房间已创建 发
  • Swift 3 的 NSLog 问题

    迁移到 Swift 3 后 当我尝试执行以下操作时出现错误 self publicDB save listRecord completionHandler record error gt Void in if let saveError e
  • 如何在 iOS 中通过 3G 连接创建无线热点

    如果我愿意 我将如何创建一个像这样的应用程序MyWi http intelliborn com mywi html 即 WiFi 网络共享应用程序 实现该功能需要哪些步骤 我需要使用哪些框架 库 我们的目标不是尝试将此应用程序放入应用程序商
  • 如果 UIGestureRecognizer 触发,如何取消按钮点击?

    更新 问题似乎是对另一个 GestureRecognizer 的依赖失败 请参阅此问题下面的评论和测试项目 在我的 iPhone 应用程序中 我有一个包含多个 UIButtons 作为子视图的视图 该视图还有一个 UITapGestureR
  • 将本机 swift Set 转换为数组[重复]

    这个问题在这里已经有答案了 我需要将 Set 转换为 AnyObject 或 String 的数组 这可能吗 我知道使用 NSSet 我可以使用 allObjects 但对于本机集似乎没有任何函数 只需直接强制转换为数组即可 let arr
  • UIWebView stringByEvaluatingJavaScriptFromString 在后台

    在 iOS 应用程序中 我正在运行一个相当大的脚本UIWebView using stringByEvaluatingJavaScriptFromString 就 JavaScript 字符串的长度而言较大 调用 JavaScript 后会
  • 动态框架中未定义的架构符号

    我正在开发一个 iOS 框架 该框架包含多个第三方框架并使用 UnitySendMessage C 方法与 Unity 进行通信 我想创建一个动态框架 支持 iOS8 但我偶然发现以下编译错误 Undefined symbols for a
  • 在 Swift 中使用 Obj-C 完成块

    在 Objective C 中 我有一个完成块类定义为 File h typedef void MYCompletionBlock BOOL success NSDictionary result NSError error 然后 在 Sw
  • DOMDocument PHP 内存泄漏

    在 MAC 上的 MAMP 下运行 PHP 5 3 6 内存使用量每调用 x 次 3 到 8 次 就会增加 直到脚本因内存耗尽而终止 我该如何解决 libxml use internal errors true while true dom

随机推荐

  • 用周围值的平均值替换缺失值

    我的数据集如下所示 我们称之为 a date value 2013 01 01 12 2 2013 01 02 NA 2013 01 03 NA 2013 01 04 16 8 2013 01 05 10 1 2013 01 06 NA 2
  • THREE.js 使用 DOMElements 的 SphereGeometry 全景热点

    我使用以下命令创建了一个简单的 WebGL 3D 全景应用程序SphereGeometry PerspectiveCamera and a CanvasTexture 现在 我希望通过在场景的某些部分添加 热点 来使场景栩栩如生Sphere
  • 为什么我的 takeWhile 无法与我的 Stream 配合使用

    以下代码打印 1 令人困惑的是 如果我删除评论 它会返回 4 这正是我所期望的 var max 0 lazy val list Stream Int 1 Stream from 2 list takeWhile x gt max x x l
  • 非常快速的 3D 距离检查?

    有没有一种方法可以进行快速而肮脏的 3D 距离检查 虽然结果很粗糙 但速度非常快 我需要进行深度排序 我用STLsort像这样 bool sortfunc CBox a CBox b return a gt Get3dDistance Pl
  • iPhone 音量已更改事件(音量已达到最大)

    我在用着 AudioSessionAddPropertyListener kAudioSessionProperty CurrentHardwareOutputVolume audioVolumeChangeListenerCallback
  • 如何按哈希值之一对哈希引用数组进行排序?

    首先 请原谅我生锈的 Perl 我正在尝试修改 Bugzilla 的 whine pl 以生成按严重性排序的错误列表 所以它给了我一个哈希引用数组 每个哈希值都包含有关特定错误的大量信息 ID 受让人 严重性等 我想按严重性对数组进行排序
  • 旧的 Firebase Analytics 事件报告发生了什么?

    最近的 Firebase 控制台更新后 无法找到按内容类型列出的 select content 事件的报告 以及按 item id 找到的选定内容类型的报告 我使用这些报告来研究我的应用程序行为 方法是记录它们 Analytics logE
  • 仅通过一个 SocketChannel 发送多条消息

    读完本教程后 http rox xmlrpc sourceforge net niotut http rox xmlrpc sourceforge net niotut 这是关于编写非阻塞服务器和客户端 我阅读了NIO部分 跳过了SSL部分
  • 根据帖子内容添加 WordPress 类别

    我正在开发一个 Wordpress 网站 用户可以登录该网站并发帖 我想为他们的帖子添加一些功能 基本上 我想为用户提供使用保留字符为帖子分配类别的功能 因此 如果用户发布 我正在学习 programming 该帖子将被分配到编程类别 在
  • CSS水平滚动

    我正在尝试创建一个 div 包含一系列只能水平滚动的照片 它应该看起来像这样LINK http cssdesk com L6Dsa 然而 上述只能通过指定宽度来实现 div 其中包含照片 因此它们不会 自动换行 如果我不设置宽度 它看起来像
  • Flask 在哪里寻找图像文件?

    我正在使用 Flask 设置本地服务器 我当前想要做的就是使用index html 页面中的img 标签显示图像 但我不断得到error GET http localhost 5000 ayrton senna movie wallpape
  • 无法解析 Android 上的 MapActivity 类

    我有一个包含 11 种不同活动的应用程序 这些活动之一是 MapActivity 的扩展 它是用于数据可视化的地图 要进入此活动 用户必须首先完成启动活动 然后完成其他 3 个活动 启动MapActivity的代码是 Intent i ne
  • 自定义对话框太小

    我有一个实现自定义对话框的 Android 活动 应用程序运行正常 但对话框太小 我想显示更大的对话框 我怎样才能实现这一点 这是我的布局 xml
  • 在 system() 函数中使用变量 C++

    string line ifstream myfile aaa txt getline myfile line system curl exe b cookie txt d test line http example com http e
  • 如何清除node js中清除浏览器cookie的req.session?

    我在用 express 4 14 0 with express session用于保存用户名 用户登录后 我会将用户名保存在req session authorizedUser username将其显示在应用程序标题中 当浏览器历史记录被清
  • Vim 中的任务标签

    关于任务标签的两个问题 Vim 中还提供哪些其他任务标签 例如 TODO 有没有办法像 Eclipse IDE 一样制作自定义任务标签 对于自定义标签 我在 vimrc 中使用以下内容 您应该能够根据您的需要进行调整 if has auto
  • 跨平台上的 AES cbc 填充加密/解密(.net c# 和代号 one bouncy castle)

    加密 解密不能在跨平台上工作 我已使用此链接使用代号一内的充气城堡 AES 密码来加密 解密文本 J2ME 中使用 Bouncycastle 进行 AES 加密 解密的示例 https stackoverflow com questions
  • 从 C# winforms 应用程序将输出写入控制台[重复]

    这个问题在这里已经有答案了 可能的重复 如何在表单应用程序中显示控制台输出 窗口 https stackoverflow com questions 4362111 how do i show console output window i
  • 如何追踪 Ruby 代码中的内存泄漏?

    Question 我正在调试 rake 任务中的内存泄漏 我想查看以下调用堆栈 有生命的物体 最初分配这些对象的对象或行是什么 ruby prof 可以做到这一点吗 如果没有 我应该使用什么工具 Setup Gems 导轨 3 2 16 事
  • 在 Swift 中使用 UIAlertController 发生内存泄漏

    我使用这个简单的代码呈现一个简单的 UIViewController IBAction func addNewFeed sender UIBarButtonItem var alertView UIAlertController UIAle