0408

makekeyAndVisible解释

一个程序可以有多个Window,但只有一个窗口能够成为主窗口.如图中所示,此时的window2是主窗口.主窗口用处大了.从iOS7开始无论是主窗口还是次窗口,都可以交互,比如文本框输入文字.但在iOS6及其之前的版本,非KeyWindow(非主窗口)是无法交互的,即无法向文本框中输入文字

如果发现一个文本框不能输入文字,那就就要想到这个文本框所在的窗口是不是主窗口

iOS主窗口和非主窗口的表现:


获取当前程序的主窗口

一些总结:


键盘也是在一个窗口Window里面,如果你想更改键盘上的东西,则拿到键盘所在的Window,就能拿到键盘,就能拿到键盘里的子控件,就能更改键盘上的按钮


UINavigationController 压入栈控制器方法


UINavigationController 出栈方法,默认只出当前topViewController,也可以直接pop到指定的ViewController,也可以直接pop到RootViewController


控制器的生命周期

具体如下图所示:


内存警告的处理

1、首先AppDelegate接收到警告

2、然后开始寻找根控制器,看看根控制器的哪个子控制器遇到内存警告了

3、找到收到内存警告的子控制器,做一些处理(可能是SDWebImage清缓存,可能是一些成员变量=nil置空,也可能是释放一些非最高优先级的控制器资源.什么是非最高优先级的控制器,就是不是在当前界面上正在显示的控制器.如果再次返回到了之前释放后的控制器,系统会再次自动创建控制器的view,让控制器复活,调用viewDidLoad方法,执行控制器的完整生命周期.)

下面一个图很明白的说明了内存警告的处理流程


iOS 进阶 第九天(0408)的更多相关文章

  1. iOS进阶_地图上定位的标志——大头针

    一.添加大头针 地图使用的框架是MapKit 大头针走的是MKAnnotation协议 /* 注意:因为是满足协议MKAnnotation,所以没有MKAnnotation的系统大头针类,必须自定义大 ...

  2. iOS进阶指南试读之UI篇

    iOS进阶指南试读之UI篇 UI篇 UI是一个iOS开发工程师的基本功.怎么说?UI本质上就是你调用苹果提供给你的API来完成设计师的设计.所以,想提升UI的功力也很简单,没事就看看UIKit里的各个 ...

  3. iOS进阶路线以及进阶书籍

    第一,熟悉ARC机制:首先要了解ARC的前世今生.假设了解不清楚会导致两种可能,1,一个对象的引用莫名奇异为空.或失效了.这个一般都能在开发阶段及时发现,由于会导致应用异常.2.导致内存溢出:不了解A ...

  4. iOS进阶读物

    不知不觉作为 iOS 开发也有两年多的时间了,记得当初看到 OC 的语法时,愣是被吓了回去,隔了好久才重新耐下心去啃一啃.啃了一阵,觉得大概有了点概念,看到 Cocoa 那么多的 Class,又懵了, ...

  5. iOS进阶推荐的书目

    <Effective Objective-C 2.0:编写高质量iOS与OS X代码的52个有效方法>([英]Matt Galloway) 很多面试题有涉及 <IOS数据库应用高级编 ...

  6. iOS进阶之多线程

    多线程 注意:iOS关于UI的刷新和添加必须在主线程中操作! pthread的创建方法: pthread_t pthread; //第一个参数 线程指针 //第二个参数 线程的一些属性 //第三个参数 ...

  7. iOS进阶_三方使用步骤

    一.配置环境(:后为在终端输入的命令) 打开终端 查看自己电脑的Ruby环境:gem sources -l 如果环境已经是淘宝镜像了,此时不需要再进行环境的修改. 如果不是,发送gem sources ...

  8. iOS进阶面试题----Block部分

    1 什么是block 对于闭包 (block),有很多定义,其中闭包就是能够读取其它函数内部变量的函数,这个定义即接近本质又较好理解.对于刚接触Block的同学,会觉得有些绕, 因为我们习惯写这样的程 ...

  9. iOS进阶面试题----多线程

    1 多线程是什么 多线程是个复杂的概念,按字面意思是同步完成多 项任务,提高了资源的使用效率,从硬件.操作系统.应用软件不同的角度去看,多线程被赋予不同的内涵,对于硬件,现在市面上多数的CPU都是多核 ...

随机推荐

  1. C++复习笔记

    好多东西都忘了,现在重新复习一遍,把遇到的要点都记录下来.随时更新. 指针 C保证在为数组分配存储空间的时候,指向数组之后的第一个位置的指针也是合法的.也就是说保证指针 a + SIZE 是合法的,但 ...

  2. Filter的执行顺序及实例

    学习中的收藏,该文出自http://www.cnblogs.com/Fskjb/archive/2010/03/27/1698448.html 在此,非常感谢该文章作者的分享,本文完全转载自上面链接, ...

  3. CefSharp 发布后在客户机上报找不到dll的问题

    两个因素:一是与项目平台属性的选择要一致二是需要安装CefSharp对应的的VC++可发行组件包(用包管理器引用了此DLL后,会有一个readme.txt,上面详细介绍了CefSharp所需要的环境要 ...

  4. Ubuntu 16.04 Vysor 破解 和黑屏问题解决+ 闪屏问题解决

    最新破解更新说明: 参考本人blog: 点我呀 黑屏解决 Vysor使用和黑屏问题 经过了一段时间的艰辛探索,确定是我chrome的PNaCl没有安装,然后又是一段艰辛的Google之后,终于在一个链 ...

  5. 22----2013.06.29---HTML--html介绍.超链接和图片,表格,表单,表单标签,meta,复习当天内容

    01 HTML HTML :Hypertext Markup Language   超文本标记语言(类似于 裸奔的人.) 作用:向用户展示信息. CSS: Cascading 层叠样式表(类似于 人的 ...

  6. js 数组的length(javascript教程四)

    这是一个简单的函数,就是利用length来判断数组再遍历数组了. <script language="javascript" type="text/javascri ...

  7. 防止服务器被暴力破解使用DenyHosts

    公司有台服务器被坏人盯上了,通过日志可以看到一直在做暴力破解ssh. 防止服务器被暴力破解使用DenyHosts 参考链接: 防止ssh破解,Ubuntu安装denyhosts的一些问题 防止你的ss ...

  8. 获取字符串对应的MD5值 (AL16UTF16LE)

    CREATE OR REPLACE FUNCTION fn_md5_utf16le (InputString IN VARCHAR2) RETURN VARCHAR2 IS retval ); /** ...

  9. (转)手把手教你如何架设VPN

    简介 让远程用户连接Exchange Server的传统解决方案是使用Outlook Web Access.然而,为何不使用虚拟专用网(Virtual Private Network,VPN)让你的远 ...

  10. js获取url及url参数的方法

    <script language="JavaScript" type="text/javascript"> function GetUrlParms ...