Swift:当我转向另一个视图控制器时,内存未清除,收到内存警告

2023-12-25

我正在 Xcode 6.2 中为 iOS 8.1 构建应用程序。我有一个UIViewController (LevelViewController)其中包含一个UICollectionView每个单元格代表我游戏中的一个级别(每个单元格都有一个带有数字的标签)。一旦选择了其中一个单元格,我就会执行一个显示segueSKScene它加载该特定级别的所有数据。我还有一个“菜单”按钮,可以执行返回主菜单的显示操作。

从功能上讲,这一切都有效,但是在执行两次转场后我遇到了严重的记忆问题。在查看了仪器之后,似乎当我从LevelViewController那所有的UILabel我为每个人添加的UICollectionViewCell与细胞中包含的所有其他内容一起保留在记忆中。应该只有 192 个标签(针对 192 个级别),但在多次执行此转接之后,乐器中的标签总数总计约为 1000 个。

显然这些没有在内存中被释放,我的理解是 swift 应该处理这个问题,所以我不确定问题是什么。我还应该指出的是UICollectionView以编程方式添加,并且没有IBOutlets被使用。

那么我究竟怎样才能摆脱这些标签呢?UICollectionView当我离开时LevelViewController。我对此感到非常困惑,它毁了我的圣帕特里克节。因此,出于对爱尔兰一切的热爱,请帮助一个小伙子:)

注:我尝试过的方法

self.collectionView.removeFromSuperView()
self.collectionView = nil
self.collectionView.deleteItemsAtIndexPaths(path)

如果不查看用于执行这些转场的代码,就很难判断。但我猜测问题与视图控制器之间的连接方式有关。

我还有一个“菜单”按钮,可以执行返回主菜单的显示操作。

如果我必须根据上面的语言进行猜测,而不是弹出 Level ViewController (我假设它嵌入在UINavigationController),您正在尝试使用返回主菜单performSegueWithIdentifier:这实际上会创建视图控制器的一个新实例并将其推送到导航堆栈上(并保留它的现有实例,从而导致内存问题)。

如果这确实是您的问题,解决方案非常简单:点击菜单按钮时,您应该调用popViewControllerAnimated https://developer.apple.com/library/ios/documentation/UIKit/Reference/UINavigationController_Class/#//apple_ref/occ/instm/UINavigationController/popViewControllerAnimated: or dismissViewControllerAnimated:completion: https://developer.apple.com/library//ios/documentation/UIKit/Reference/UIViewController_Class/index.html#//apple_ref/occ/instm/UIViewController/dismissViewControllerAnimated:completion:.

当您习惯了 iOS Segueing 时,一件值得做的简单小事就是向所有视图控制器添加反初始化器,如下所示,以便获取对象按预期被释放的持续调试消息:

deinit {
    debugPrintln("Name_of_view_controlled deinitialized...")
}

圣帕迪节快乐!

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

Swift:当我转向另一个视图控制器时,内存未清除,收到内存警告 的相关文章

  • Expo eas-cli iOS 构建失败

    我已经使用 React Native 创建了一个应用程序 并尝试通过 Expo 的 eas cli 创建一个 iOS 应用程序商店 跑步时eas build platform ios the Fastlane build failed wi
  • Sprite Kit - 确定轻弹精灵的滑动手势矢量

    我有一个游戏 圆形物体从屏幕底部射出 我希望能够滑动它们以将它们朝我滑动的方向轻弹 我的问题是 我不知道如何计算滑动的矢量 方向 以便使圆形物体以适当的速度向正确的方向轻拂 我使用的静态矢量 5 5 需要通过滑动速度和滑动方向来计算 另外
  • 如何从子 UICollectionview 内部获取 UITableView 的一部分

    我有一个UITableView with a UICollectionView在其每一行中 如下图所示 source https ashfurrow com blog putting a uicollectionview in a uita
  • 如何在 Swift 4 中以编程方式将 IBAction 添加到 uibutton?

    如何以编程方式将 IBAction 添加到 uibutton button addTarget self action Selector buttonAction for touchUpInside func buttonAction se
  • iOS:保持应用程序在后台运行

    如何让我的应用程序在后台运行 我需要越狱我的 iPhone 才能执行此操作吗 我只需要这个应用程序每隔设定的时间间隔从互联网上检查一些内容 并在需要时发出通知 以供我自己使用 是的 不需要越狱 查看本文档的 实现长时间运行的后台任务 部分A
  • iOS 应用内购买沙箱测试显示我的密码错误

    我在 itunesconnect 中创建了一个 Sandbox Tester 帐户 并通过我在网络上注册的电子邮件验证了电子邮件地址 验证后 我尝试使用沙盒帐户在我的应用程序中购买商品 并收到更改密码的提醒 所以我做了 然后我尝试使用新密码
  • “无法调用非函数类型‘HTTPURLResponse’的值?”(Alamofire 4.0) [Swift 3.0]

    我收到此错误 无法调用非函数类型 HTTPURLResponse 的值 关于该部分 response request response data error 我想知道是否有人可以帮助我解决这个问题 Alamofire download ur
  • ios 8 opengl es 1.1 已停产?

    我们即将在 iOS 应用商店上推出一款游戏 最近我们发现它无法在 iOS 8 上运行 游戏加载到黑屏 但其他一切似乎都可以运行 可以听到音乐 对触摸屏有反应 但显示屏上没有任何反应 我们的引擎相当旧并且使用 OpenGL ES 1 1 我现
  • 核心蓝牙在后台进行广告和扫描

    我一直在尝试设置一个应用程序 使设备既扫描外围设备又作为外围设备进行广告 目标是当两个设备通过蓝牙发现彼此靠近时在后台被唤醒 从 Apple 文档来看 您似乎应该能够在后台运行 BLE 启用蓝牙中心和蓝牙外设后台模式 并且当一台设备位于前台
  • 根据图像制作具有 UIImageView 高度的 UICollectionViewCells

    我想做一个UICollectionView单元格的宽度是屏幕的宽度 但高度取决于单元格的宽高比UIImageView inside 在我目前的实施中 所有UICollectionViewCell实例是正方形 这不是我想要的 我想以某种方式使
  • 应用程序在第二次运行 nsnull 计数的循环时崩溃

    我有一个循环 第一次运行正常 但第二次循环时我得到 NSNull count unrecognized selector sent to instance 0x3a094a70 Terminating app due to uncaught
  • 检测您何时进入/退出 Xamarin.iOS 中的主线程

    Xamarin MonoTouch 有没有办法检测主线程中是否正在调用代码 我正在寻找类似于Java的东西EventQueue isEventDispatchThread 我发现 Swing 编程很方便assert时不时 或有时assert
  • Xcode 不会在故事板中显示我的文本字段占位符文本

    当我在属性检查器中分配文本字段的占位符值时 它不会显示在故事板中 但是 当我运行应用程序的模拟器时 它就在那里 我缺少什么设置吗 我只想能够在编辑器中看到占位符文本 下面是 xcode 和模拟器之一的屏幕截图 我遇到了同样的问题 幸运的是我
  • Swift 3 '[UIApplicationLaunchOptionsKey:任意]?'无法转换为 '[String : NSString]'

    我有一个 TVOS 应用程序已从 Swift 2 转换为 Swift 3 但出现以下错误 我不确定如何让它安静下来 UIApplicationLaunchOptionsKey 任意 无法转换为 String NSString 它出现在这段代
  • ios 8 核心数据崩溃

    保存时 CoreData 发生崩溃 2014 09 16 09 51 58 273 My app 2678 105246 Terminating app due to uncaught exception NSInvalidArgument
  • 如何保存 1 个 xcode 项目中的所有构建设置并在其他 xcode 项目上使用它们?

    我使用 xcode 4 5 和 cordova phonegap 来构建我的应用程序 我投入了大量时间来获取适合我的 Xcode 项目的构建设置 并且我想在我正在构建的多个应用程序上重用这些设置 我正在寻找是否有一种快速的方法来导出这些设置
  • Swift 中的弹出视图

    我有一个弹出视图 没有选项卡栏 它弹出到带有选项卡栏的视图控制器 在带有选项卡栏的视图控制器中 我设置了一个单击按钮 以便弹出视图控制器 IBAction func PopUpClicked sender UIButton gt Void
  • 使用 JavaScript 从 URL 变量读取来加载不同的 CSS 样式表

    我试图在我的 WordPress 博客上使用两个不同的样式表 以便在通过 Web 访问页面时使用一个样式表 而在通过我们的 iOS 应用程序访问博客内容时使用另一个样式表 现在 我们将 app true 附加到来自 iOS 应用程序的 UR
  • 在 Swift 3 中单击和双击 UITableViewCell

    我在 TableView Cell 上有故事板 segue 我用它来在单元格单击中传输到另一个 VCdidSelectRowAt方法 现在我双击了TapGestureRecognizer处理手机上的点击问题 问题是 单击时 segue 正在
  • 如何在 Swift 中使用 substringToIndex? [复制]

    这个问题在这里已经有答案了 我在这一行收到编译器错误 UIDevice currentDevice identifierForVendor UUIDString substringToIndex 8 类型 String Index 不符合协

随机推荐