objective-c – UIDatePicker减缓了事情

objective-c – UIDatePicker减缓了事情,第1张

概述我花了一个很好的时间,并得出结论,UIDatePicker使presentModalViewController慢了几秒钟.我有一个视图控制器与两个按钮和日期选择器.在另一个类中,我使用这个代码来呈现这个视图控制器: RandomClass *class = [[RandomClass alloc] init];[class setModalTransitionStyle: UIModalTra 我花了一个很好的时间,并得出结论,UIDatePicker使presentModalVIEwController慢了几秒钟.我有一个视图控制器与两个按钮和日期选择器.在另一个类中,我使用这个代码来呈现这个视图控制器:
RandomClass *class = [[RandomClass alloc] init];[class setModalTransitionStyle: UIModalTransitionStyleCrossdissolve]; //an animation[self presentModalVIEwController: class animated: YES];[class release];

我已经删除了RandomClass中的日期选择器,并注意到我可以很快地呈现RandomClass,当我在视图中插入日期选择器时,它会再次减慢事情.我试图以编程方式添加日期选择器,并以不同的线程呈现模态视图控制器,但仍然存在滞后.

你有同样的问题吗?你知道如何解决它吗?我非常感谢你的答案和帮助.谢谢!

解决方法 我正在经历与模态视图演示相同的缓慢表现.我通过牺牲一些记忆来支持表现来到一个解决方案.

背景:
我的应用程序正在使用Model-VIEw-Controller-Store模型.商店是一个照顾我的模型的单身,因此,一旦实例化,它几乎可以从任何一个类中访问.我正在使用Store类通过属性来保持某些昂贵的类(如NSCalendar,NSDateFormatter等).

解:
我在仓库单身人士中打了一个UIDatePicker属性,允许通过任何类访问它.

在Singleton的界面中:

@property (strong,nonatomic) UIDatePicker *datePicker;

在Singleton的实现中,我为datePicker实现了一个getter.

- (UIDatePicker *)datePicker{    if (!_datePicker) {        _datePicker = [[UIDatePicker alloc] init];    }    return _datePicker;}

这确保了datePicker只被创建一次,它可以从我的应用程序的任何地方访问.

现在在需要使用选择器的类的vIEwDIDLoad方法中,通过getter方法获取属性:

UIDatePicker *aDatePicker = [[MySingleton shareInstance] datePicker];// Set it's location.    [aDatePicker setFrame:CGRectMake(0.0,236.0,self.vIEw.frame.size.wIDth,216.0)];// Connect to any actions    [aDatePicker addTarget:self action:@selector(datePickerValueChanged:) forControlEvents:UIControlEventValueChanged];// Add it to you vIEw    [self.vIEw addSubvIEw:[[MySingleton shareInstance] datePicker]];

第一次创建日期选择器时,会发生缓慢的行为.每隔一段时间,模态视图就会看起来很快(取决于你在视图中还有什么).

本质上我正在创建一个全局变量并保持它,所以我不必每次创建它,而是以内存为代价.性能差异在我的应用案例中是值得的.

注意:
有一个值得注意的注意事项.由于datePicker很可能会超出模态视图,因此必须确保datePicker不指向任何释放的内存.

所以如果在vIEwDIDLoad中将“self”分配为目标:

[aDatePicker addTarget:self action:@selector(datePickerValueChanged:) forControlEvents:UIControlEventValueChanged];

重要的是在诸如vIEwDIDdisappear之类的方法中添加此代码以防止崩溃:

[aDatePicker removeTarget:self action:@selector(datePickerValueChanged:) forControlEvents:UIControlEventValueChanged];
总结

以上是内存溢出为你收集整理的objective-c – UIDatePicker减缓了事情全部内容,希望文章能够帮你解决objective-c – UIDatePicker减缓了事情所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1254272.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存