美文网首页iOS学习
基础知识汇总

基础知识汇总

作者: 慌莫染 | 来源:发表于2019-01-28 17:42 被阅读12次

    前言:最近闲暇之余看一些面试题,当做是一种提升吧,随手记录下,若有侵权,立即删除

    1.为什么说OC是动态语言

    OC类的类型和数据变量的类型都是在运行时才确定的,而不是在编译的时候确定的。如:多台特征,我们可以使用父类指针来指向子类对象,并且可以调用子类的方法。比如以下:

    UILabel *lab = [AllMyLab init]alloc];//AllMyLab继承于UILabel
    

    lab就可以掉用 AllMyLab 中的方法。
    因为运行时(runtime)特性,我们可以动态的添加方法,或替换方法。
    如人和动物都可继承eat方法

    2.什么是runtime,一般在什么时候运用。
    是什么
    (1)字面上说,运行时。
    (2)具体的说是一套比较底层的纯C语言API,属于一个C语言库
    (3)平时编写的OC代码,在程序运行过程中,其实最终都是转成了runtime的C语言代码,runtime算是OC的幕后工作者
    什么时候用
    1.将某些OC代码转为运行时代码,探究底层,比如block的实现原理(上边已讲到);
    2.拦截系统自带的方法调用(Swizzle 黑魔法),比如拦截imageNamed:、viewDidLoad、alloc;实现方法交换
    3.实现分类也可以增加属性;
    4.实现NSCoding的自动归档和自动解档;
    5.实现字典和模型的自动转换。(MJExtension)
    6.(kvo是使用runtime实现)
    7用于封装框架
    头文件 <objc/runtime.h> <objc/message.h>
    相关函数 objc_msgSend:给对象发送消息 class_copyMethodList:遍历某个类所有的方法 class_copylvarList:遍历某个类所有的成员变量

    3.MVC和MVVM,MVP
    MVC:简单的来说,就是Model数据、View视图、Controller数据进行分层,实现代码解耦。
    MVVC:是Model-View-ViewMode模式的简称。由Model数据、View视图、ViewModel视图模型 三部分组成。比MVC更加释放控制器臃肿,将一部分逻辑(耗时,公共方法,网络请求等)和数据的处理等操作从控制器搬运到ViewModel中。
    MVVM的特点:
    (1)低耦合。View可以独立于Model变化和修改,一个ViewModel可以绑定到不同的View上,当View变化的时候Model可以不变,当Model变化的时候View也可以不变。
    (2)可重用性。可以把一些视图的逻辑放在ViewModel里面,让很多View重用这段视图逻辑。
    (3)独立开发。开发人员可以专注于业务逻辑和数据的开发(ViewModel)。设计人员可以专注于界面(View)的设计。
    (4)可测试性。可以针对ViewModel来对界面(View)进行测试。

    MVP全名是Model-view-presenter,是使用者界面设计模式的一种。
    Model 定义使用者界面所需要被显示的数据模型,一个模型包含着相关的业务逻辑。
    View 视图为呈现使用者界面的终端,用以表现来自 Model 的数据,和使用者命令路由再经过 Presenter 对事件处理后的数据。
    Presenter 包含着元件的事件处理,负责检索 Model 取得数据,和将取得的数据经过格式转换与 View 进行沟通。
    MVP 设计模式通常会再加上 Controller 做为整体应用程序的后端程序工作。

    4.进程和线程的区别和联系?
    (1)开启一个app叫一个进程,开启app中的一个功能算一个线程。
    (2)一个线程只能属于一个进程,而一个进程可以有多个线程,且一个进程最少有一个线程。

    5.为什么代理要用weak?代理的delegate和dataSource有什么区别?block和代理的区别?
    为什么代理要用weak? 防止循环引用。例如View有一个协议,需要一个代理实现回调。一个Controller添加这个View,并且遵守协议,成为View的代理。如果不用week,用strong,Controller ->View -> delegate -> Controller,就循环引用了。
    代理的delegate和dataSource有什么区别? delegate偏重于与用户交互的回调,有那些方法可以供我使用,例如UITableviewDelegate;dataSource偏重于数据的回调,view里面有什么东西,属性都是什么,例如UITableviewDatasource;
    block和代理的区别?
    https://www.jianshu.com/p/6bba9b4a25d5

    相关文章

      网友评论

        本文标题:基础知识汇总

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