IOS学习中的几个问题
来源:互联网 发布:mac上的打谱软件 编辑:程序博客网 时间:2024/06/05 15:38
1.描述IOS中MVC得具体体现。
答:MVC中的M是Model,即模型的意思。表示对数据的访问、处理和操作。V即View视图,用于显示界面。C是Controller控制器,用来控制和管理M和C,相当于它们之间交互的桥梁。IOS中充分运用了MVC模式,将数据的访问、业务逻辑与视图的显示分离开,用控制器来控制二者,来降低程序各模块间的耦合。例如,数据库的访问、持久化数据为Model,用UIView显示数据,但是不会直接使用,而是创建控制器UIViewController实例来执行显示的操作,控制View,使其显示。
2.copy和retain的区别?
答:copy一个对象,会开辟一个新内存区,然后复制对象到新内存区,还有个指向到新对象的新引用。
retain不会在堆中创建新对象,只会创建一个新的引用指向原有的对象。也就是说,retain会创建一个新的引用与原来的引用一起指向堆中的同一个对象。
3.描述一个完整的UIViewController生命周期?
答:UIViewController首先进行初始化,不能将加载视图的代码写到初始化里,而是在需要时再加载。需要加载视图时,会调用loadView方法,因此将代码写在这里面。执行完loadView方法后,会执行viewDidLoad方法。如图
当内存不足程序收到内存警告时,会释放不需要的视图。在IOS 6.0以前,要将释放代码写到unloadView方法里。在执行这个方法之前,会先执行viewWillUnload方法,接着执行unloadView方法,最后调用viewDidUnload方法。在IOS 6.0以后,直接将释放代码写到didRecieveMemoryWarning方法中即可。如图
4.readwrite、readonly、assign、retain、copy、nonatomic属性的作用。
答:readwrite表明既可读又可写。readonly表明只读。assign表明只会传值。retain表明会保留对象、创建一个引用指向该对象。copy表明会在堆中复制一个对象,有新引用指向该对象。nonatomic表明该对象不是原子性的,也就是多个线程可同时访问它,它不是线程安全的。
5.为什么很多内置类,如TableViewController的delegate的属性是assign不是retain?
答:防止产生循环引用。所有的引用计数系统,都存在循环应引用的问题。例如下面的引用关系:
• 对象a创建并引用到了对象b.
• 对象b创建并引用到了对象c.
• 对象c创建并引用到了对象b.
这时候b和c的引用计数分别是2和1。当a不再使用b,调用release释放对b的所有权,因为c还引用了b,所以b的引用计数为1,b不会被释放。b不释放,c的引用计数就是1,c也不会被释放。从此,b和c永远留在内存中。
这种情况,必须打断循环引用,通过其他规则来维护引用关系。比如,我们常见的delegate往往是assign方式的属性而不是retain方式 的属性,赋值不会增加引用计数,就是为了防止delegation两端产生不必要的循环引用。如果一个UITableViewController 对象a通过retain获取了UITableView对象b的所有权,这个UITableView对象b的delegate又是a, 如果这个delegate是retain方式的,那基本上就没有机会释放这两个对象了。自己在设计使用delegate模式时,也要注意这点。
- IOS学习中的几个问题
- 学习Hadoop中的几个问题
- iOS 使用CocoaPods过程中的几个问题
- Oracle 学习过程中的笔记以及几个问题
- STL学习笔记二:模版中的几个问题
- 学习几个问题
- IOS 检测摇晃 几个问题
- IOS 检测摇晃 几个问题
- 开发中的几个问题
- JSP中的几个问题
- IE7中的几个问题
- 技术管理中的几个问题
- xjad使用中的几个问题
- 开发中的几个问题
- Endnote使用中的几个问题
- Linux中的几个问题
- Android中的几个问题
- hibernate使用中的几个问题
- stc单片机“全自动下载”(程序版)
- 面向对象
- 容斥原理(SOJ3082)
- PL/SQL_游标使用
- R软件初识数据分析
- IOS学习中的几个问题
- 回文子串划分 Palindrome Partitioning
- C++实现单链表的逆转
- 用SeekBar更改图片的大小,缩放及其旋转
- 笔试面试杂记
- Leetcode_climbing-statirs (c++ and python version)
- 认识NPOI
- NAT and Traversal NAT(TURN/STUN/ICE)
- 标准CSV格式