• iOS 面试题


    1、CALayer有哪些子类?用途? 

    2、有哪些常见的 Crash 场景?

    3、@protocol 和 category 中如何使用 @property 

    4、什么是 method swizzling?

    5、如何让自己的类用 copy 修饰符?如何重写带 copy 关键字的 setter?

    6、iOS签名机制大概是怎样的?

    答案:

    1、CALayer有哪些子类?用途? 

    CAShaperLayer

    CAGradientLayer: 颜色过渡

    CAEmitteryLayer :粒子效果

    CATransformLayer:给图层加景深效果,构造一个层级分明的3D结构。

    CAReplicatorLayer:图层复制

    CAScrollLayer

    CATiledLayer:为节省内存渲染开销提供了途径

    CATextLayer:

    CAEAGLLayer:

    AVPlayerLayer: 播放视频 

    2、有哪些常见的 Crash 场景?

    数组越界

    访问了僵尸对象。已经被释放掉的对象

    访问野指针. EXC_BAD_ACCESS.

    访问了不存在的方法. unrecognized selector 

    多线程并发操作

    在定时器下一次回调前将定时器释放

    3、@protocol 和 category 中如何使用 @property

     objc_setAssociatedObject/ objc_setAssociatedObject

    4、什么是 method swizzling?

    简单说就是进行方法交换

    在Objective-C中调用一个方法,其实是向一个对象发送消息,查找消息的唯一依据是selector的名字。利用Objective-C的动态特性,可以实现在运行时偷换selector对应的方法实现,达到给方法挂钩的目的

    每个类都有一个方法列表,存放着方法的名字和方法实现的映射关系,selector的本质其实就是方法名,IMP有点类似函数指针,指向具体的Method实现,通过selector就可以找到对应的IMP。

    selector --> 对应的IMP

    交换方法的几种实现方式

    利用 method_exchangeImplementations 交换两个方法的实现

    利用 class_replaceMethod 替换方法的实现

    利用 method_setImplementation 来直接设置某个方法的IMP。

    5、如何让自己的类用 copy 修饰符?如何重写带 copy 关键字的 setter?

    6、iOS签名机制大概是怎样的? 

     5、如何让自己的类用 copy 修饰符?如何重写带 copy 关键字的 setter?

    若想令自己所写的对象具有拷贝功能,则需实现NSCopying协议。如果自定义的对象分为可变版本与不可变版本,那么就要同时实现NSCopyiog与NSMutableCopying协议。

    6、

    https://www.jianshu.com/p/ad29445eb91c

  • 相关阅读:
    ul中的li设置等宽高css
    Element组件中组件的使用问题
    换个角度聊效率
    【Leetcode 做题学算法周刊】第七期
    【Leetcode 做题学算法周刊】第六期
    【Leetcode 做题学算法周刊】第五期
    【Leetcode 做题学算法周刊】第四期
    【Leetcode 做题学算法周刊】第三期
    【Leetcode 做题学算法周刊】第二期
    【Leetcode 做题学算法周刊】第一期
  • 原文地址:https://www.cnblogs.com/developer-qin/p/9454582.html
Copyright © 2020-2023  润新知