iOS 7 App因内存压力而终止
我有一个ipad应用程序的两个视图,它使用大型UIScrollowView,这似乎导致内存问题。 当内存达到250MB左右时,我得到了第一个内存警告。 使用Apple Instruments时,这里是All Heap中最大的:
VM:ImageIO_JPEG_Data,大小32.13MB VM:CoreAnimation,大小32.13MB VM:ImageIO_JPEG_Data,大小26.64MB …
我在滚动视图中有很多图像 – 它们都被加载到故事板中,我想知道如果我减小图像的大小或分辨率它会解决问题吗?
您可以设置一个系统来删除/加载滚动视图中某些点的某些图像,因此当用户即将看到它们时,应用程序只将它们存储在内存中。
因为你说它相当大,在scrollview的scroll方法中,设置变量以了解scrollview所处的位置(例如:中途向下,10%滚动等)。 如果用户坐在滚动视图的末尾(即:无法向下滚动(100%)),那么他们并没有完全看到视图顶部的图像。 然后,您可以将这些图像设置为零,以便应用程序可以重用该内存。 当用户滚动并且滚动视图接近某个百分比时,您可以加载用户即将看到的图像,并且用户远离的图像为零(这可能会导致几秒钟的’空白’用户正在疯狂地滚动浏览你的应用程序,但这没关系,因为所有加载的图像都不会超过几秒钟。
因为这些图像被加载到故事板中,我假设您正在通过UIImageView加载它们。 只需给每个sockets一个sockets(按住控件+单击并将其拖动到您class级的.h文件并创建一个IBOutlet),然后当您有用户向下滚动视图的百分比时,您可以知道’好吧,用户是在50%所以我可以摆脱0-20%和80-100%的scrollview’的图像,你这样做:
//^Get scrollview scrolled percentage //^find out where the user is, get a list of UIImageViews that are not visible on the screen _yourUIImageView.image = nil //get rid of the image, clear memory up //then when you need to add it again, assign an image to the UIImageview
希望我帮忙。
最大值不在Storyboard中加载图像,而是可以通过编码来完成,如下所示
NSString *resourcePath = [[NSBundle mainBundle] resourcePath]; NSString *pathForImageFile1 = [resourcePath stringByAppendingPathComponent:@"filename.png"]; UIImage * image = [[UIImage alloc] initWithContentsOfFile:pathForImageFile1]; imageView.image = image; image = nil;
希望能帮助到你!
- ios google + api youtube订阅了一个频道
- HealthKit中的错误:错误域= com.apple.healthkit代码= 100“无法打开数据库”UserInfo = {NSLocalizedDescription =无法打开数据库}
- Objective-C中的“isa”variables等于Java中的“instanceof”
- 对于未被删除的对象,“核心数据无法完成错误”
- NSManagedObject的自定义初始值设定项
- 何时使用takeUnretainedValue()或takeRetainedValue()来检索Swift中的非托pipe对象?
- 带有OR返回错误的NSPredicate
- 在集合视图中为UI开关编写事件
- iOS CMMotionActivity Manager,汽车停车时如何检测停车标志?
- 为什么Xcode成功构build和复制我的应用程序,但不会启动它?
- Facebook iOS SDK – FWWebDialogs不呈现消息