美文网首页
3. iOS面试题

3. iOS面试题

作者: 苏宇lovecc | 来源:发表于2016-05-09 11:16 被阅读67次
    1. retain 和 copy 的区别 -- iOS学习-属性@property的修饰词
    • retain:创建一个指针,引用计数+1;retain属性表示两个对象地址相同,内容当然也相同了,这个对象的引用计数值+1。
    • copy:创建一个新对象;copy属性代表两个对象内容一样,新的对象的引用计数为1,与旧有对象的引用计数无关,旧有对象没有变化;copy减少了对象对上下文的依赖。
    1. 深拷贝和浅拷贝:
    • 浅拷贝:并不拷贝对象本身,仅仅拷贝的是指向对象的指针,对象的引用计数+1。(指针拷贝)(retain)
    • 深拷贝:直接拷贝整个对象内存到另一块内存中。(内容拷贝)(copy)
    1. 类目和继承的异同
      在Objective-C中,给一个类扩展一个其它方法,有两种实现方式:类别和继承。

    2. 继承Inherit
      这个是面向对象语言都有的一个特性,子类会继承父类的方法和属性。
      对于以下情况,无法使用类别,必须使用继承。
      1)新扩展的方法与原方法同名,但是还需要使用父类的实现。因为使用类别,会覆盖原类的实现,无法访问到原来的方法。
      2)扩展类的属性,这个类别无法做到。

    3. 类别category
      这是Objective-C语言的一个特性,可以在不改变类名和原来类的实现的前提下,为已存在的类添加新的方法,但是不能添加实例变量。
      以下两种方式最好使用类别。
      1)针对系统提供的一些类,例如:NSString,NSArray,NSNumber等类,系统本身不提倡使用继承去扩展方法,因为这些类内
      部实现对继承有所限制,所以最后使用类别来进行方法扩展。
      2)类别支持开发人员针对自己构建的类,把相关的方法分组到多个单独的文件中,对于大型而复杂的类,这有助于提高可维护性,并简化单个源文件的管理。

    4. 懒加载
      1.懒加载基本
      懒加载——也称为延迟加载,即在需要的时候才加载(效率低,占用内存小)。
      所谓懒加载,写的是其get方法.注意:如果是懒加载的话则一定要注意先判断是否已经有了,如果没有那么再去进行实例化。
      2.使用懒加载的好处:
      (1)不必将创建对象的代码全部写在viewDidLoad方法中,代码的可读性更强
      (2)每个控件的getter方法中分别负责各自的实例化处理,代码彼此之间的独立性强,松耦合
      3.代码示例,查看链接。iOS开发UI篇-懒加载

    5. _window和self.window的区别

    • _windows代表实例变量;

    • self.windows代表set或get方法。

    1. frame与bounds的区别

      1>. frame是该View在父View坐标系统中的位置和大小;

      2>. bounds是该View在本地坐标系统中的位置和大小;X值永远等于0,Y值永远等于0。

    2. UIVIew与CALayer(有一个文档,在附件中保存。)

    3. UIView继承自UIResponse,再继承NSObject,所以可以响应事件;CALayer直接继承自NSObject,不能响应方法。

    4. UIView侧重于对显示内容的管理,CALayer侧重于对显示内容的绘制。

    5. UIButton的父类是?UIView的父类是?

    UIButton --> UIControl --> UIView --> UIResponder --> NSObject

    9.Core Data

    10.交叉引用与循环引用

    11.多线程?

    1. GCD的死锁用同步的方式给主队列添加任务。

    13.常用的网络请求方式。

    相关文章

      网友评论

          本文标题:3. iOS面试题

          本文链接:https://www.haomeiwen.com/subject/icherttx.html