iOS 8.3 中的 UIDatePicker 内存泄漏

2023-12-02

当在运行 IOS 8.3 的 iPad 上的弹出窗口中使用 UIDatePicker 时,我发现内存泄漏。每次弹出日期选择器然后关闭时,我都会在多次内存泄漏中得到大约 5K 的信息。泄漏的对象是 NSDateComponents,负责的框架是 [_UIDatePickerMode _yearlessYearForMonth:]。

我编写了一个简单的测试应用程序来演示该问题(https://github.com/david-ape/datepickertest/)。我已经包含了 UIPopoverController 选项和 UIPopoverPresentationController 选项,但使用哪个选项似乎并不重要。

我是否做错了什么,或者有解决方法,还是需要等待 Apple 的修复?如果是后者,那么有人可以建议我可以使用第三方控件来代替 UIDatePicker 吗?

下面是我用来弹出日期选择器的代码。

头文件

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController <UIPopoverControllerDelegate,
                                              UIPopoverPresentationControllerDelegate>


@end

实施文件

#import "ViewController.h"

@interface ViewController ()

@property (nonatomic, strong) UIPopoverController *ios7Popover;

- (IBAction)datePickerPopupIOS7:(UIButton *)sender;
- (IBAction)datePickerPopupIOS8:(UIButton *)sender;

@end

@implementation ViewController

// helper - returns a view controller containing a date picker for use in a
// popup
+ (UIViewController *)buildDatePickerViewController
{
    CGRect frame = CGRectMake(0, 0, 350, 216);

    UIViewController *viewController = [[UIViewController alloc]init];
    viewController.preferredContentSize = frame.size;
    UIDatePicker *datepicker = [[UIDatePicker alloc]initWithFrame:frame];
    datepicker.datePickerMode = UIDatePickerModeDate;
    datepicker.hidden = NO;
    datepicker.date = [NSDate date];
    [viewController.view addSubview:datepicker];
    return viewController;
}

// popup date picker using UIPopoverController (IOS7 compatible)
- (IBAction)datePickerPopupIOS7:(UIButton *)sender
{
    UIViewController *viewController = [ViewController buildDatePickerViewController];

    self.ios7Popover = [[UIPopoverController alloc]initWithContentViewController:viewController];
    self.ios7Popover.delegate = self;
    [self.ios7Popover presentPopoverFromRect:sender.frame
                                      inView:self.view
                    permittedArrowDirections:(UIPopoverArrowDirectionUp|UIPopoverArrowDirectionDown| UIPopoverArrowDirectionLeft|UIPopoverArrowDirectionRight)
                                    animated:YES];
}

// popup date picker using UIPopoverPresentationController (IOS8 or later required)
// Thanks to http://stackoverflow.com/a/26944036/1764243 for how to do this
- (IBAction)datePickerPopupIOS8:(UIButton *)sender
{
    if ([UIPopoverPresentationController class])
    {
        UIViewController *viewController = [ViewController buildDatePickerViewController];

        UINavigationController *destNav = [[UINavigationController alloc] initWithRootViewController:viewController];
        destNav.modalPresentationStyle = UIModalPresentationPopover;
        UIPopoverPresentationController *popover = destNav.popoverPresentationController;
        popover.delegate = self;
        popover.sourceView = self.view;
        popover.sourceRect = [sender frame];
        destNav.navigationBarHidden = YES;
        [self presentViewController:destNav animated:YES completion:nil];
    }
    else
    {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Not supported"
                                                        message:@"UIPopoverPresentationController not supported in this version of IOS"
                                                       delegate:nil
                                              cancelButtonTitle:@"Ok"
                                              otherButtonTitles:nil];
        [alert show];
    }
}

#pragma mark - UIPopoverControllerDelegate methods

 - (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController
{
    self.ios7Popover = nil;
}

@end

None

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

iOS 8.3 中的 UIDatePicker 内存泄漏 的相关文章

  • 如何确定自定义 UINavigationItem.titleView 的大小/框架?

    创建自定义视图并将其分配给 navigationItem titleView 属性后 它的显示如下 自定义视图填充两个按钮之间的空间 因此 自定义视图并不以导航栏为中心 如何确定 titleView 属性中视图的框架 我想在导航栏中居中放置
  • Xcode 6 Save for Enterprise Deployment 不再为 ipa 创建 plist?

    Xcode 5 帮助为企业 ipa 创建 plist 描述符 Xcode 6 6A313 仅创建 ipa 这是错误还是有意更改 如果是这样 退后一步的原因是什么 如果我之前没有使用 Xcode 5 生成 plist 我需要自己手动构建它 您
  • Swift 无法从上到下呈现视图控制器

    在我的应用程序中 我必须从上到下呈现屏幕 我尝试了下面的代码 它给出了相同的正常呈现风格 let screen self storyboard instantiateViewController withIdentifier Screen1
  • 苹果的外部配件(蓝牙)仅适用于 MFI 设备? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我的学士论文的目标是通过蓝牙适配器将光串行设备连接到 iPad 目前我正在努力应对苹果的限制 我经常在网上看到我可以使用支持的配置文件 h
  • 自动布局+基于总行数的动态表高度约束

    首先 这与动态单元格的高度无关 所以不要把它搞混了 我有一个场景 我创建了三张卡 详细信息卡 显示位置的具体详细信息 图表卡 根据选择显示不同的图表 更多详细信息卡 卡显示更多详细信息 以下是上述卡片的屏幕 查看以上屏幕的层次结构 Cont
  • 新的 iTunes 连接界面错误“您必须选择一个版本”

    当尝试将我的新应用程序提交到应用程序商店时 我注意到苹果已经更改了其网站界面 更新元数据和关键字并点击 提交审核 后 我收到错误 您必须选择一个版本 通过谷歌搜索 我没有找到答案 但是 我注意到 构建 标题旁边有一个加号按钮 您必须在其中选
  • 了解 malloc_history 转储

    如果您曾经问 过如何调试 Objective C 中的释放 分配问题 您将遇到这些可以帮助跟踪问题的环境设置 NSZombieEnabled 释放后保留对象 以便您可以获得指针等 MallocStackLogging 保留对象历史记录以供以
  • Modal UIViewController 在 iPad 上总是全屏显示。为什么?

    我试图在 iPad 上创建一个简单的模式对话框 无论是小设置 UIModalPresentationFormSheet 还是大设置 UIModalPresentationPageSheet 但无论我做什么 它们都会全屏显示 带有标题栏 模态
  • 从钥匙串保存和加载 |斯威夫特[重复]

    这个问题在这里已经有答案了 如何简单地将字符串存储在钥匙串中并在需要时加载 有几种SO解决方案 主要参考Git repo 但我需要最新 Swift 上最小和最简单的解决方案 当然 我不想添加 git 框架来简单地在我的项目中存储密码 有类似
  • iOS 9.3 出现新的 UIPDFPageRenderOperation 错误?

    我正在向 UIWebView 添加一些 PDF 链接 每次加载并做出滚动手势时 都会收到此错误 objc 910 UIPDFPageRenderOperation 对象 0x14acaca10 过度释放 当已经解除分配时 打断 objc o
  • 为什么使用 UIImageJPEGRepresentation 方法通过 writetofile 保存的 .jpeg 文件大小比 ios 中的 UIImageWriteToSavedPhotosAlbum 大

    我正在尝试拯救一个UIImage设备中 jpeg 文件的对象 我正在使用这段代码 void saveImageToDocumentsDirectory UIImage mimage withFileName NSString fileNam
  • 核心数据在没有明显原因的情况下恢复到之前的状态

    基于 Core Data 的 iOS 应用程序的一些客户报告称 他们偶尔会丢失数据 这些报告非常奇怪 这就是我想询问您对此的看法的原因 客户报告说 当他们在一段时间 几分钟 几小时或第二天 后重新打开应用程序时 他们的一些数据会丢失就像底层
  • Xcode 和 Waze 集成

    我正在尝试整合我的app with waze http www waze com 有人知道如何调用位智并发送坐标吗 我没有找到任何 API 或其他相关信息 void navigateToLatitude double latitude lo
  • 如何更改标签栏图标颜色从默认蓝色?

    我有四个标签 我能够将选项卡图标颜色从默认的蓝色更改为红色 或可能任何颜色 并且效果非常好 问题是它仅适用于三个选项卡项目 最后一个选项卡默认为蓝色 下面是代码 我正在编码这个rootviewcontrollerAppDelegate m您
  • 如何在调用-reloadData后保留UITableView contentoffset

    CGPoint offset table contentOffset table reloadData table setContentOffset offset animated NO unuseful block UITableView
  • 如何在 Cocoa with Core Data 中上传和存储文件?

    我有一个应用程序 我希望能够将文件上传到其中 我可以想象序列化数据 将其放入数组中 然后序列化数组并将其放入核心数据中 但这似乎不太正确 我还可以想象将文件复制到应用程序的支持文件中 获取这些文件的 NSURL 并存储数组或 NSURL 无
  • Objective-C 语法是什么,椭圆式点表示法? “……”

    我在 Joe Hewitt 的 Three20 源代码中注意到了这一点 而且我以前从未在 Objective C 中见过这种特殊的语法 甚至不知道如何在适当的谷歌搜索中引用它 来自 UITableViewDataSource TTSecti
  • 启动时运行后台任务

    我正在编写一个 iOS 应用程序 它使用 Dropbox Datastore API 在多个设备之间同步数据 在 Android 上 我可以告诉服务在启动时启动 这使其能够同步 设备关闭时可能发生的任何更改 我无法找到让我的应用程序在 iO
  • Base64Transcoder.m 重复符号

    我想使用 SKPSMTPMessage 库 唯一的问题是这个库包含文件 Base64Transcoder m 由于我有 Dropbox SDK 该文件会出现重复错误 我该如何解决这个错误 我不能直接删除 Base64Transcoder m
  • iOS swift 应用程序启动时出现黑屏

    我有个问题 当我启动我的应用程序时 会看到黑屏几秒钟 然后出现启动屏幕 我的启动画面不是默认的 我使用了视图控制器 因为我的启动画面有一个动画 我搜索了一个解决方案 我得到了这个 在我的闪屏加载 iPhone 之前出现黑屏 https st

随机推荐

  • twilio 捕获错误不起作用

    我正在我的 Laravel 5 应用程序中实现 twilio 要在我使用的框架中使用它aloha laravel twilio一体化 发送有效请求测试凭证工作正常 当我想要实施时遇到问题错误处理 由于某种原因 catch 没有收到错误 这会
  • 我应该使用 HTML::Parser 还是 XML::Parser 来提取和替换文本? [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我希望能够提取所有纯文本并从 HTML XHTML 文档中分析 修改 然后根据需要进行替换 我可以使用以下方法来做到这一点吗HTML 解析器或者应该是XML 解析器 有没有人知道有什
  • 解释 Ruby on Rails 中的迭代器语法

    我开始学习 Ruby on Rails 发现自己对语法感到困惑 所以我必须阅读一些 Ruby 语法 我从中学到了语法http www cs auckland ac nz references ruby doc bundle Manual m
  • PyQt QThread 多线程不起作用

    I have 2 QListWidget lists List2 is being filled when some item has been selected from List1 问题是 在填充 List2 之前 我必须执行很多任务
  • 清除页面中的所有单选按钮

    我的应用程序中有很多动态生成的单选按钮Windows 窗体项目 可以根据数据库中的值来检查它们 我想通过单击按钮清除所有单选按钮 我怎样才能做到这一点 检查一下 private void button1 Click object sende
  • Visual Studio“任何 CPU”目标是什么意思?

    我对 Visual Studio 2008 中的 NET 平台构建选项有一些困惑 什么是 Any CPU 编译目标 它会生成什么类型 的文件 我检查了这个 任何 CPU 构建的输出可执行文件 发现它们是 x86 可执行文件 谁不会看到这一点
  • 通过需要考虑多种成本的矩阵的最佳路径

    例如给出以下矩阵 0 8 0 3 0 8 8 0 3 0 0 5 0 1 0 6 0 0 对于每个元组 第一个数字是食物 第二个数字是水 我需要从右下角到左上角 并且只能向上或向左移动 我需要收集尽可能多的食物和水 这样我才能活得尽可能长
  • XML 元素不会触发 TextBox ConvertBack 事件

    ValueFormattingConverter Convert被称为XmlElement ConvertBack从未被调用过 为什么 是否有义务将具有约束力的指令向下传递 文本框的使用是否会覆盖其自身的绑定设置 可以做什么 我的文本框
  • System.gc()什么时候做某事?

    我知道Java中垃圾收集是自动的 但我明白如果你打电话System gc 在您的代码中 JVM 可能会也可能不会决定在此时执行垃圾收集 这具体是如何运作的 当 JVM 看到时 它到底根据什么基础 参数决定执行 或不执行 GCSystem g
  • Python Instagram 使用请求登录

    我正在尝试使用 python 登录 Instagram 我能够获得 csrf 令牌 但是requests Session post 似乎没有正确地将登录数据发布到网站 我总是得到class no js not logged in clien
  • 如何获取错误输出并将其存储在变量或文件中

    我在弄清楚如何获取错误输出并将其存储在 ksh 的变量或文件中时遇到了一些麻烦 所以在我的脚本中我有cp p source file destination里面一个while loop 当我收到以下错误时 cp source file Th
  • 使用 : 在列表或 numpy 数组中进行多重切片

    我在尝试弄清楚如何提取列表中间隔一些索引的多个值时遇到一些困难 例如 给定一个列表l 0 1 2 3 4 5 6 7 8 9 10 我只想提取值 1 2 3 and 6 7 8 9 我可以l 1 4 l 6 1 但是有没有办法这样写l 1
  • 使用 Jersey 进行多线程处理

    这是两个似乎相互矛盾的链接 我宁愿相信文档 Link 1 服务器上的请求处理默认以同步处理模式进行 Link 2 它已经是多线程的了 我的问题 哪个是对的 它可以同时是同步和多线程吗 为什么文档这么说 如果已知资源方法执行需要很长时间才能计
  • [__NSCFDictionary objectAtIndex:]:发送到实例的无法识别的选择器

    我正在尝试将 Json 文件解析到表视图中 但收到此错误 NSCFDictionary objectAtIndex 发送到实例的无法识别的选择器 并且应用程序正在崩溃 请帮助我 我是 iOS 开发新手 My Code implementat
  • 为什么MKMapView中的clusterAnnotationForMemberAnnotations没有被调用?

    我有一个简单的地图视图 IBOutlet private var mapView MKMapView 然后我一一添加注释 mapView addAnnotation Annotation user user 并向他们展示全部 mapView
  • 如何获取GPU信息?

    我有一个任务是用 C 收集有关 Windows 中 GPU 的信息 但我不知道从哪里开始 任何想法 更新 我想要名称 vram dac 制造商 版本 时钟 update2 如果我使用 win32 videocontroller 类 我只是获
  • 如何在 Python 中多次训练 sklearn 中的 SVM 分类器?

    我想知道是否可以在 for 循环中多次从 Python 中的 sklearn 训练 SVM 分类器 我的想法如下 for i in range 0 10 data np load somedata labels np load somela
  • android webview 导致空指针

    我的布局中有这个
  • Qt 创建者错误

    启动项目调试 然后 Running build steps for project Text Editor Starting c qt 2010 05 qt bin qmake exe C Qt 2010 05 Text Editor Te
  • iOS 8.3 中的 UIDatePicker 内存泄漏

    当在运行 IOS 8 3 的 iPad 上的弹出窗口中使用 UIDatePicker 时 我发现内存泄漏 每次弹出日期选择器然后关闭时 我都会在多次内存泄漏中得到大约 5K 的信息 泄漏的对象是 NSDateComponents 负责的框架