zoukankan      html  css  js  c++  java
  • iOS面试用到的一些知识点和技术

    1、APP的生命周期和viewcontroler的生命周期?

    答:APP的生命周期:在APP的代理中分为七个阶段:

    1.将要启动

    2.已经启动

    3.将要进入非活动状态

    4.进入后台

    5.从后台进入前台

    6.进入活动状态

    7.内存告警

    viewcontroller的生命周期:(也是七个)

    loadView->viewDidLoad->viewWillAppear->viewDidAppear->viewWillDisAppear->viewDidDisAppear->delloc

    2、多线程:NSThread、NSOperation、GCD

      NSOperation 是个抽象类,并不具备封装操作的能力,必须使⽤它的子类:

      NSInvocationOperation    (使用代理)

      NSBlockOperation        (使用block)

      GCD---

      Grand Central Dispatch (GCD) 是Apple开发的一个多核编程的较新的解决方法

      

    • GCD可用于多核的并行运算
    • GCD会自动利用更多的CPU内核(比如双核、四核)
    • GCD会自动管理线程的生命周期(创建线程、调度任务、销毁线程
    • 程序员只需要告诉GCD想要执行什么任务,不需要编写任何线程管理代码

      学习GCD之前,先来了解GCD中两个核心概念:任务和队列

    任务:就是执行操作的意思,换句话说就是你在线程中执行的那段代码。在GCD中是放在block中的。执行任务有两种方式:同步执行异步执行。两者的主要区别是:是否具备开启新线程的能力。

    • 同步执行(sync):只能在当前线程中执行任务,不具备开启新线程的能力
    • 异步执行(async):可以在新的线程中执行任务,具备开启新线程的能力
    • 队列:这里的队列指任务队列,即用来存放任务的队列。队列是一种特殊的线性表,采用FIFO(先进先出)的原则,即新任务总是被插入到队列的末尾,而读取任务的时候总是从队列的头部开始读取。每读取一个任务,则从队列中释放一个任务。在GCD中有两种队列:串行队列并发队列
      想要更详细的了解GCD去看:http://www.jianshu.com/p/2d57c72016c6
    • 3、单例、代理、属性、通知、block的传值技术?
    • 属性传值很好理解。A->B  就在B的.h中暴露出一个属性就可以了,在A中直接调用B的实例进行赋值就可以了。   也是最简单的传值方法
    • 代理传值  A->B  在A中声明协议  在B中遵循协议  并实现协议方法就可以了        也比较简单
    • B->A  即反向传值    在B中声明协议  A中遵循协议----- 在A中push到B时遵循协议,设置代理  并实现代理方法   在B中pop回A时利用自己的代理执行代理方法(即把B中的值赋给代理方法中的参数即可)  是不是很简单      
    • 只要记住   代理反向传值   谁传谁声明协议   接收方实现代理方法   push前遵循协议设置代理   pop前执行代理方法(赋值)
    •   block 传值分为正向传值和反向传值

    正向传值  A->B  在A中声明一个block    Apush前进行block的实现block    B中要赋值的时候进行调用block      这种block应为带参数和返回值的block

    反向传值 B->A 在B中声明一个block  Apush前实现block    Bpop前调用block    这种block应为带参数的block


    单例传值也分为正向传值 和反向传值

    正向传值就不说了     说白了就是一个中间者  A->B     A->C   C->A

    反向传值的话就是    B->A  Bpop时把值赋值给单例    在界面消失时实例化A的对象 把单例的值赋给A      (感觉多此一举  还不如直接属性赋值   但单例在数据共享时还是有用处的)

    4、MVC、MVVM、MVP三大设计框架

      MVC

    缺陷:

     

    实在是写的太好了  就直接拿过来了

    MVVM:

    MVP:

     5、单例(singleton)代理(delegate)观察者(observer)动作/目标机制(target/action)等常见设计模式

    单例:

    代理:

    观察者:

     动作/目标机制:

    总结的好,希望能收获一个赞  给点鼓励

    这是第一章总结的面试题就有一大堆东西了  

    接下来还有第二章  或者我的简书地址去看看:http://www.jianshu.com/users/795c2ec428fd/latest_articles   也收藏了些干货。

    谢谢大家的支持

  • 相关阅读:
    linux下shell显示-bash-4.1#不显示路径解决方法
    update chnroute
    An error "Host key verification failed" when you connect to other computer by OSX SSH
    使用dig查询dns解析
    DNS被污染后
    TunnelBroker for EdgeRouter 后记
    mdadm详细使用手册
    关于尼康黄的原因
    Panda3d code in github
    Python实例浅谈之三Python与C/C++相互调用
  • 原文地址:https://www.cnblogs.com/PengHongMiao/p/5886752.html
Copyright © 2011-2022 走看看