ios初级开发工程师

ios初级开发工程师

十二月 28, 2018

1.objective-c 有多继承吗?不是的话有什么替代方法

cocoa中所有类都是NSObject的子类,多继承在这里是使用protocol委托代理实现的。

2.objective-c有私有方法吗?

objective-c类里面的方法有两种,静态方法和实例方法,所有实例变量默认都是私有的,所有实例方法默认都是公有的。

3.const的作用

1
2
const int *a;  
int * const a;

欲阻止一个变量被改变,可以使用const关键字
对指针来说,可以指定指针本身为const,

4.static作用,内存只分配一次

5.extern “c” 的作用

6.#import跟#include的区别,@class

@class一般用于头文件中需要声明该类的某个实例变量的时候用到,在m文件中还是需要使用#import;而#import比起#include的好处就是不会引起交叉编译。

7.objective-C的优缺点

  1. 优点
    Cateogies
    posing
    动态识别
    指标计算
    弹性讯息传递
    不是一个过渡复杂的c衍生语言
    Objective-C与C++可混合编程
  2. 缺点
    不支持命名空间
    不支持运算符重载
    不支持多继承
    使用动态运行时类型, 所有的方法都是函数调用,所以很多编译时优化方法都用不到。

8.objective-C的内存管理

通过分配和初始化(比如[[MyClass alloc] init])的方式来创建对象,那就拥有这个对象,需要负责该对象的释放。这个规则在使用NSObject的便利方法new时也同样适用。
如果您拷贝(copy)一个对象,您也拥有拷贝得到的对象,需要负责该对象的释放。
如果您保持(retain)一个对象,您就部分拥有这个对象,需要在不再使用时释放该对象。反过来如果您从其他对象那里接收到一个对象,则您不拥有该对象,也不应该释放它。

9.自动释放池是什么,如何工作

当您向一个对象发送一个autorelease消息时,Cocoa就会将该对象的一个引用放入到最新的自动释放池。它仍然是个正当的对象,因此自动释放池定义的作用域内的其他对象可以向它发送消息。当程序执行到作用域结束的位置时,自动释放池就会被释放,池中的所有对象也就被释放了。

10.堆和栈的区别

  • 管理方式
  • 申请大小
  • 碎片问题
  • 分配方式
  • 分配效率