根据Apple的App Extension Programming Guide:
运行应用扩展的内存限制明显低于前台应用的内存限制。在这两个平台上,系统可能会主动终止扩展,因为用户希望返回到主机应用程序中的主要目标。某些扩展的内存限制可能低于其他扩展:例如,小部件必须特别高效,因为用户可能同时打开多个小部件。
应用扩展有非常严格的内存限制,并且各不相同.
每种类型的应用程序扩展的最大内存预算是多少?
我可以像iOS App ios app maximum memory budget一样测试它们吗?
3条答案
按热度按时间4xrmg8kj1#
我刚刚在iPad Pro 9.7上遇到了一个崩溃消息:
因此,在2GB iOS设备上为120 MB,但请注意,限制因扩展类型而异。
示例:
苹果确认网络扩展的内存限制为
5-6MB
,从iOS 10 Beta 2
提高到15MB
。这些限制不适用于某些应用程序(请参阅Psiphon3 ticket)。测试VPN(网络扩展的
NEPacketTunnelProvider
)产生以下错误:oo7oh9g92#
在我的例子中,我试图在
UIImageView
中显示5500 x 3000 px的图像,它在iPhone SE上崩溃(EXC_RESOURCE RESOURCE_TYPE_MEMORY (limit=120 MB, unused=0x0)
),但在模拟器上没有。运行内存配置文件有助于找出问题。在分配给
UIImageView.image
之前缩小图像已修复此问题。6ioyuze23#
我试图通过扩展从共享图像创建缩略图,并看到当从
NSItemProvider
提供的url加载UIImage
,然后通过以下方式创建缩略图时:对于较大的图像,会导致扩展(> 120 MB)上的内存溢出。对我来说,解决方案是在直接从url创建
UIImage
之前对图像进行降采样,以合理的像素大小为我的应用程序,这样它就可以通过共享扩展进行管理,而不会导致内存溢出。这是使用
private func resizeForUpload(_ imageURL: URL) -> UIImage?
的方法