zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Saltstack module gem 详解
    Saltstack module freezer 详解
    Saltstack module firewalld 详解
    Saltstack module file 详解
    Saltstack module event 详解
    Saltstack module etcd 详解
    Saltstack module environ 详解
    Saltstack module drbd 详解
    Saltstack module dnsutil 详解
    获取主页_剥离百度
  • 原文地址:https://www.cnblogs.com/developer-qin/p/9454582.html
Copyright © 2011-2022 走看看