9、oc语言的优缺点
优点
1.面向对象的c,完全兼容C语言(C语言效率很高,c语言是面向过程的),oc
既有编译的高效性,又有面向对象的特点 gcc
很高的编译效率和很高的编程效率
2.单继承,伪多继承(可借助协议实现多继承)。避免了c++的繁琐菱形继承问题。
3.oc的特性 ———— 类别,协议,c++所没有的,oc独有的。其中协议是借鉴了java语言的特色。看上去oc和java有很多共同的东西。但是oc的编译效率比java高很多
4.oc借鉴了c++的很多的优点,比如:虚函数,OC中所有函数皆为虚,OC里卖弄所有对象都是指向对象的指针。OC的动态绑定借鉴了c++的Dynmicast。
5.OC的内存管理,借鉴了C++的智能指针思想
6.ARC
缺点
- 脱不了c的指针的约束
- 语法很怪异。学习成本很高。
10、软件开发的阶段?
1).市场调研。
2).需求分析
3).软件设计
4).程序编码
5).软件测试
11、写出你了解的几种持久化存储机制?
答:存入到文件、 存入到NSUserDefaults(系统plist文件中)、存入到Sqlite文件数据库,core data。
9、列举开发过程中常见的异常(不少于3个)?
答: 指针异常,内存泄漏,数组越界。
10、引用与指针有什么区别?
答
引用是给变量起一个别名 也就是一个变量有两个名字 他们是同一块空间
指针是分配一块内存用来保存变量的地址 间接引用变量
11.What is lazyloading?
答案:懒汉模式,只在用到的时候才去初始化。
也可以理解成延时加载。
我觉得最好也最简单的一个列子就是tableView中图片的加载显示了。
一个延时载,避免内存过高,一个异步加载,避免线程堵塞。
9、 Objective C 内存管理机制是怎样的,简述release和autorelease的用法区别?
手动管理和ARC机制
手动管理需要手动添加retain和release
ARC机制是编译器自动添加retain和release
Release是立即释放
Autorelease是当对象不使用后再释放
10、常用的ios设计模式有哪些(最少写六个)?
答:
(一)代理模式
(二)观察者模式
(三)MVC模式
(四)单例模式
(五)策略模式
(六)工厂模式
11、id 声明的对象有什么特性?
答:
id是个很重要的类型,是个可以指向任何类型的指针或者可以理解为指向任何未知类型的指针。
1、什么是指针的释放?
具体来说包括两个概念.
答:
1 释放该指针指向的内存,只有堆上的内存才需要我们手工释放,栈上不需要.
2 将该指针重定向为NULL.
2. 怎样防止指针的越界使用问题?
必须让指针指向一个有效的内存地址,
1 防止数组越界
2 防止向一块内存中拷贝过多的内容
3 防止使用空指针
4 防止改变const修改的指针
5 防止改变指向静态存储区的内容
6 防止两次释放一个指针
7 防止使用野指针.