22
2020
03

oc 系统对象的 copy 与 mutableCopy 方法

一、非集合类对象的copy与mutableCopy  在非集合类对象中,对不可变对象进行copy操作,是指针复制,mutableCopy操作是内容复制;  对可变对象进行copy和mutableCopy都是内容复制。用代码简单表示如下:    NSString *str = @"hello word!";    NSString *strCopy = [str copy] // 指针复制,strCopy与str的地址
22
2020
03

Category(类别)、 Extension(扩展)和继承的区别

区别:1. 分类有名字,类扩展没有分类名字,是一种特殊的分类。2. 分类只能扩展方法(属性仅仅是声明,并没真正实现),类扩展可以扩展属性、成员变量和方法。3. 继承可以增加,修改或者删除方法,并且可以增加属性。
22
2020
03

switf 2.0增加了一个新的关键字来实现递归枚举。enum List{ case Node(T,List)}什么关键字可以实现递归枚举?

indirect关键值可以允许递归枚举,代码如下:   enum List{ indirect case Cons{T,List)}
22
2020
03

怎么定义数组

var  arry:[String] = []  或  var arr:Array<String> = Array<String>()
22
2020
03

浅拷贝和深拷贝的区别?

浅拷贝:只复制指向对象的指针,而不复制引用对象本身。深拷贝:复制引用对象本身。内存中存在了两份独立对象本身,当修改A时,A_copy不变。
22
2020
03

runloop流程

22
2020
03

runtime是怎么实现的 ,那些地方用到了

obj_msgsend     黑魔法  tableview没数据时  添加一个view 字典转模型   模型转字典 class_propertyList   property_getName 自定义KVO   isa指针  NSKVONotifying_B
22
2020
03

frame 和 bounds 有什么不同?

frame指的是:该view在父view坐标系统中的位置和大小。(参照点是父view的坐标系统)bounds指的是:该view在本身坐标系统中的位置和大小。(参照点是屏幕坐标系统)
22
2020
03

MVVM

给MVC解耦 解重  双向绑定
22
2020
03

Alamofire怎么实现的

使用线程池  文件图片上传代码基于TCP/IP  网络提交基于URLSession.dataTask  URLRequest
22
2020
03

map、filter、reduce 的作用

map : 映射 ,将一个元素根据某个函数 映射 成另一个元素(可以是同类型,也可以是不同类型)filter : 过滤 , 将一个元素传入闭包中,如果返回的是false , 就过滤掉reduce :先映射后融合 , 将数组中的所有元素映射融合在一起。
22
2020
03

Array、Set、Dictionary 三者的区别

Set:是用来存储相同类型、没有确定顺序、且不重复的值的集Array:是有序数据的集Dictionary:是无序的键值对的集
22
2020
03

Swift代码复用的方式有哪些?

1.继承2.在swift 文件里直接写方法,相当于一个全局函数3.extension 给类直接扩展方法
22
2020
03

swift把struct作为数据模型

3.1优点安全性: 因为 Struct 是用值类型传递的,它们没有引用计数。内存: 由于他们没有引用数,他们不会因为循环引用导致内存泄漏。速度: 值类型通常来说是以栈的形式分配的,而不是用堆。因此他们比 Class 要快很多!拷贝:Objective-C 里拷贝一个对象,你必须选用正确的拷贝类型(深拷贝、浅拷贝),而值类型的拷贝则非常轻松!线程安全: 值类型是自动线程安全的。无论你从哪个线程去访问你的 Struct ,都非常简单。3.2 缺点Objective-C与swift混合开发:OC调用的
22
2020
03

struct与class 的区别

struct是值类型,class是引用类型。值类型的变量直接包含它们的数据,对于值类型都有它们自己的数据副本,因此对一个变量操作不可能影响另一个变量。引用类型的变量存储对他们的数据引用,因此后者称为对象,因此对一个变量操作可能影响另一个变量所引用的对象。二者的本质区别:struct是深拷贝,拷贝的是内容;class是浅拷贝,拷贝的是指针。property的初始化不同:class 在初始化时不能直接把 property 放在 默认的constructor 的参数里,而是需要自己创建一个带参数的co
22
2020
03

open与public的区别

public:可以别任何人访问,但是不可以被其他module复写和继承。open:可以被任何人访问,可以被继承和复写。
22
2020
03

MyBatis在核心处理类分别叫什么?

MyBatis里面的核心处理类叫做SqlSession
22
2020
03

spring管理事务有几种方式

有两种方式:    1、编程式事务,在代码中硬编码。(不推荐使用)    2、声明式事务,在配置文件中配置(推荐使用)声明式事务又分为两种:a、基于XML的声明式事务b、基于注解的声明式事务
22
2020
03

SSM优缺点、使用场景?

1. Mybatis和hibernate不同,它不完全是一个ORM框架,因为MyBatis需要程序员自己编写Sql语句,不过mybatis可以通过XML或注解方式灵活配置要运行的sql语句,并将java对象和sql语句映射生成最终执行的sql,最后将sql执行的结果再映射生成java对象。2. Mybatis学习门槛低,简单易学,程序员直接编写原生态sql,可严格控制sql执行性能,灵活度高,非常适合对关系数据模型要求不高的软件开发,例如互联网软件、企业运营类软件等,因为这类软件需求变化频繁,一
22
2020
03

SpringMVC的工作流程?

1. 用户发送请求至前端控制器DispatcherServlet2. DispatcherServlet收到请求调用HandlerMapping处理器映射器。3. 处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。4. DispatcherServlet通过HandlerAdapter处理器适配器调用处理器5. 执行处理器(Controller,也叫后端控制器)。6. Controller执行完成返回ModelA
22
2020
03

什么是MyBatis 框架?

MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手工设置参数以及抽取结果集。MyBatis 使用简单的 XML 或注解来配置和映射基本体,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
22
2020
03

spring mvc常用4个基本注解

@Component、@Repository 、@Service、@Controller@Controller 控制层 ,通常我们所说的action层@Service 业务逻辑层,通常我们所说的service层或者manger层@Repository 持久层,通常我们所说的Dao层@Component 组件,书面意思就是我们不知道在哪一层时使用虽然对于spring来说,这4个注解的效果都是一样的,当spring扫描到这些注解时,都会当做需要注入的bean加载到上下文中但是在项目中,我们应该严格按
22
2020
03

IOC的优点是什么?

IOC 或 依赖注入把应用的代码量降到最低。它使应用容易测试,单元测试不再需要单例和JNDI查找机制。最小的代价和最小的侵入性使松散耦合得以实现。IOC容器支持加载服务时的饿汉式初始化和懒加载。
22
2020
03

解释AOP

面向切面的编程,或AOP, 是一种编程技术,允许程序模块化横向切割关注点,或横切典型的责任划分,如日志和事务管理。
22
2020
03

有哪些不同类型的IOC(依赖注入)方式?

构造器依赖注入:构造器依赖注入通过容器触发一个类的构造器来实现的,该类有一系列参数,每个参数代表一个对其他类的依赖。Setter方法注入:Setter方法注入是容器通过调用无参构造器或无参static工厂 方法实例化bean之后,调用该bean的setter方法,即实现了基于setter的依赖注入。
22
2020
03

什么是Spring的依赖注入?

依赖注入,是IOC的一个方面,是个通常的概念,它有多种解释。这概念是说你不用创建对象,而只需要描述它如何被创建。你不在代码里直接组装你的组件和服务,但是要在配置文件里描述哪些组件需要哪些服务,之后一个容器(IOC容器)负责把他们组装起来。
22
2020
03

什么是Spring IOC 容器?

Spring IOC 负责创建对象,管理对象(通过依赖注入(DI),装配对象,配置对象,并且管理这些对象的整个生命周期。
22
2020
03

使用Spring框架的好处是什么?

轻量:Spring 是轻量的,基本的版本大约2MB。控制反转:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们。面向切面的编程(AOP):Spring支持面向切面的编程,并且把应用业务逻辑和系统服务分开。容器:Spring 包含并管理应用中对象的生命周期和配置。MVC框架:Spring的WEB框架是个精心设计的框架,是Web框架的一个很好的替代品。事务管理:Spring 提供一个持续的事务管理接口,可以扩展到上至本地事务下至全局事务(JTA)。异常处理:
22
2020
03

Mybatis执行批量插入,能返回数据库主键列表吗?

答:能,JDBC都能,Mybatis当然也能。
22
2020
03

有哪些不同类型的IOC(依赖注入)?

构造器依赖注入:构造器依赖注入在容器触发构造器的时候完成,该构造器有一系列的参数,每个参数代表注入的对象。Setter方法依赖注入:首先容器会触发一个无参构造函数或无参静态工厂方法实例化对象,之后容器调用bean中的setter方法完成Setter方法依赖注入。
22
2020
03

Spring IoC容器是什么?

Spring IOC负责创建对象、管理对象(通过依赖注入)、整合对象、配置对象以及管理这些对象的生命周期。
22
2020
03

什么是Spring?

Spring是一个开源的Java EE开发框架。Spring框架的核心功能可以应用在任何Java应用程序中,但对Java EE平台上的Web应用程序有更好的扩展性。Spring框架的目标是使得Java EE应用程序的开发更加简捷,通过使用POJO为基础的编程模型促进良好的编程风格。
22
2020
03

谈谈你mvc的理解?

MVC是Model—View—Controler的简称。即模型—视图—控制器。MVC是一种设计模式,它强制性的把应用程序的输入、处理和输出分开。MVC中的模型、视图、控制器它们分别担负着不同的任务。视图: 视图是用户看到并与之交互的界面。视图向用户显示相关的数据,并接受用户的输入。视图不进行任何业务逻辑处理。模型: 模型表示业务数据和业务处理。相当于JavaBean。一个模型能为多个视图提供数据。这提高了应用程序的重用性控制器: 当用户单击Web页面中的提交按钮时,控制器接受请求并调用相应的模型