iOS开发那些事-响应内存警告
好的应用应该在系统内存警告情况下释放一些可以重新创建的资源。在iOS中我们可以在应用程序委托对象、视图控制器以及其它类中获得系统内存警告消息。
1、应用程序委托对象
在应用程序委托对象中接收内存警告消息,需要重写applicationDidReceiveMemoryWarning:方法。AppDelegate的代码片段:
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application NSLog(@”AppDelegate中调用applicationDidReceiveMemoryWarning:”); }
2、视图控制器
在视图控制器中接收内存警告消息,需要重写didReceiveMemoryWarning方法。ViewController的代码片段:
- (void)didReceiveMemoryWarning NSLog(@”ViewController中didReceiveMemoryWarning调用”); [super didReceiveMemoryWarning]; //释放成员变量 [_listTeams release]; }
注意释放资源代码应该放在[super didReceiveMemoryWarning]语句下面。
3、其它类
在其它类中可以使用通知,在内存警告时候iOS系统会发出UIApplicationDidReceiveMemoryWarningNotification通知,凡是在通知中心注册了
UIApplicationDidReceiveMemoryWarningNotification通知的类都会接收到内存警告通知。ViewController的代码片段: - (void)viewDidLoad [super viewDidLoad]; NSBundle *bundle = [NSBundle mainBundle]; NSString *plistPath = [bundle pathForResource:@"team" ofType:@"plist"]; //获取属性列表文件中的全部数据 NSArray *array = [[NSArray alloc] initWithContentsOfFile:plistPath]; self.listTeams = array; [array release]; //接收内存警告通知,调用handleMemoryWarning方法处理 NSNotificationCenter *center = [NSNotificationCenter defaultCenter]; [center addObserver:self selector:@selector(handleMemoryWarning) name:UIApplicationDidReceiveMemoryWarningNotification object:nil]; //处理内存警告 -(void) handleMemoryWarning NSLog(@”ViewController中handleMemoryWarning调用“); }
我们在viewDidLoad方法中注册UIApplicationDidReceiveMemoryWarningNotification消息,接收到报警信息调用handleMemoryWarning方法。这些代码完全可以写在其它类中,在ViewController中重写didReceiveMemoryWarning方法就可以了,本例这是示意性介绍一下UIApplicationDidReceiveMemoryWarningNotification报警消息。
内存警告在设备上出现并不是经常的,一般我们没有办法模拟,但模拟器上有一个功能可以模拟内存警告,启动模拟器,选择模拟器菜单硬件→模拟内存警告,这个时候我们会在输出窗口中看到内存警告发生了。
2012-11-06 16:49:16.419 RespondMemoryWarningSample[38236:c07] Received memory warning.
2012-11-06 16:49:16.422 RespondMemoryWarningSample[38236:c07] AppDelegate中调用applicationDidReceiveMemoryWarning:
2012-11-06 16:49:16.422 RespondMemoryWarningSample[38236:c07] ViewController中handleMemoryWarning调用
2012-11-06 16:49:16.423 RespondMemoryWarningSample[38236:c07] ViewController中didReceiveMemoryWarning调用
[ios开发]-APP-上架流程 由于苹果的机制,在非越狱机器上安装必须通过官方的Appstore, 开发者开发好应用后上传Appstore,也需要通过审核等环节。 AppCan作为一个跨主流平台的一个开发平台,也对ipa包上传Appstore作了支持。 本文从三个流程来介绍如何实现AppCan在 线编译出ipa包,以及上传到苹果Appstore。
关东升 国内著名iOS/Cocos技术作家,iOS技术顾问,Cocos最有价值专家(CVP),智捷课堂首席培训专家。担任51CTO社区iOS技术顾问。 著有多部移动开发畅销书。
相关文章
- iOS小技能:地理编码(地址转坐标)
- ios之EINPROGRESS错误[通俗易懂]
- iOS 根据已知NSDictionary的value找key[通俗易懂]
- 备份从android到ios系统文件,如何将音乐从安卓设备转移到iOS设备中「建议收藏」
- React Native ios 常见错误和解决方法
- 安卓和ios之间文件互传_安卓转移到iphone12
- iOS 获取本地图片尺寸_ios图片处理软件
- IOS开发之——Position和AnchorPoint(92)「建议收藏」
- iOS小技能:【intercept the HTTP/HTTPS requests 】利用NSURLProtocol 拦截请求
- HBuilder X 连接苹果手机(IOS)详细教程。Windows: 连接iOS手机调试项目
- 【iOS 开发】iOS 开发 简介 (IOS项目文件 | MVC 模式 | 事件响应机制 | Storyboard 控制界面 | 代码控制界面 | Retina 屏幕图片适配)
- ios逆向工具MonkeyDev简介详解手机开发
- iOS—内存优化详解手机开发
- iOS—-友盟分享完善版本详解手机开发
- Linux下开发iOS应用:挑战还是机会?(linux做ios开发)
- MacOS 与 iOS:由浅入深的连接(macos和ios)
- 操作系统开启iOS时代:Linux操作系统的新篇章(ios是linux)
- iOS与Linux:新老技术的融合(ios与linux的关系)
- 在iOS上安装Linux系统的挑战(ios上安装linux)
- iOS 限免 App 精选:健康记录工具《血压日记》(¥6→0)
- iOS 不是 Linux,而是苹果独特操作系统(ios是linux吗)
- 把 Linux 安装到 iOS 设备上的步骤(ios安装linux)
- 应用Linux上编译IOS应用:实现跨平台体验(linux编译ios)
- iOS开发与Linux的技术融合(ios开发linux)
- 亚马逊带广告的IMDb TV服务终于推出了Android和iOS应用
- 开启一个崭新世界:Linux与iOS系统(linux系统ios)
- 探秘iOS:它究竟是一种基于Linux的操作系统吗?(ios是linux系统吗)
- 移动端iOS技术实现Oracle数据库连接(ios联接oracle)