iOS理论:基础概念篇
2016-10-11 16:36
204 查看
浅复制与深复制(深浅拷贝) @浅复制 - 只复制指向对象的指针,而不复制引用对象本身。 复制的两份指向的是同一个内存资源,当一方改变时另一方也会做出同样的改变。 @深复制 - 复制引用对象本身,两个对象是独立存在的。
`
类别与继承 @类别 - 在不改变原来代码的情况下往里面添加新的方法,只能添加,不能删除修改。 如果类别和原来类中的方法产生名称冲突,则类别将覆盖原来的方法,因为类别具有更高的优先级。 类别主要有3个作用: 1). 将类的实现分散到多个不同文件或多个不同框架中。 2). 创建对私有方法的前向引用。 3). 向对象添加非正式协议。 @继承 - 子类继承父类,可以增加、修改或者删除方法,并且可以增加属性。
`
MVC与MVVM @MVC - 即模型-视图-控制器开发模式,模型层存储数据,视图层用来展示界面, 控制器层通过处理数据加载、用户交互、业务逻辑,来控制模型层和视图层。 @MVVM - 即Model-View-ViewModel的开发模式,它是在MVC的基础上, 将控制器层的数据加载部分进行分离,转移到ViewModel中,减轻控制器层的臃肿程度。
`
Block Block 类似于C语言的函数指针,可以作为参数进行传递,用于回调。但Block的实现可用定义在方法中,函数不可以。
`
多线程 @NSThread - @NSOperation - @GCD -
`
内存管理
`
assign/copy/retain/strong/weak/nonatomic/atomic/ @assign - 普通赋值,一般用于C语言的基本数据类型、代理,以此来防止循环引用。 @strong - 强引用,在ARC中使用strong告诉编译器帮助我们自动插入retain。 @weak - 普通赋值,相当于手动管理内存的assign。 @nonatomic - 非原子性访问,不加同步,多线程并发访问会提高性能。
`
KVC和KVO @KVC - 即指NSKeyValueCoding,一个非正式的Protocol,提供一种机制直接通过字符串的名字来间接访问对象的属性。 而不是通过调用Setter、Getter方法访问。KVO就是基于KVC实现的关键技术之一。 @KVO - 即Key-Value Observing,它提供一种机制,当指定的对象的属性被修改后,则对象就会接受到通知。 简单的说就是每次指定的被观察的对象的属性被修改后,KVO就会自动通知相应的观察者了。
`
ViewController的生命周期
`
iOS 创建一个最简单的单例 + (instancetype)sharedInstance { static <#className#> * instance; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ instance = [[self alloc] init]; }); return instance; }
`
TCP和UDP TCP全称为传输控制协议,提供面向连接、可靠的、点到点的通信。 UDP全称为用户数据报协议,提供非连接、不可靠、点到多点的通信。
`
Socket和Http连接 Http连接:即所谓的短连接,客户端向服务端发送一次请求,服务端响应后连接会立即断掉。 Socket连接:即所谓的长连接,理论上客户端与服务端一旦建立起连接将不会主动断掉。 1、什么是Socket? Socket又称之为“套接字”,是系统提供的用于网络通信的方法。它的实质并不是一种协议,没有规定计算机应当怎么样传递消息, 只是给程序员提供了一个发送消息的接口,程序员使用这个接口提供的方法,发送与接收消息。 Socket描述了一个IP、端口对。它简化了程序员的操作,知道对方的IP以及PORT就可以给对方发送消息, 再由服务器端来处理发送的这些消息。所以Socket一定包含了通信的双发,即客户端(Client)与服务端(server)。 2、Socket的通信过程? 每一个应用或者说服务,都有一个端口。比如DNS的53端口,http的80端口。我们能由DNS请求到查询信息, 是因为DNS服务器时时刻刻都在监听53端口,当收到我们的查询请求以后,就能够返回我们想要的IP信息。 所以,从程序设计上来讲,应该包含以下步骤: 1)服务端利用Socket监听端口; 2)客户端发起连接; 3)服务端返回信息,建立连接,开始通信; 4)客户端,服务端断开连接。 即时通讯最大的特点就是实时性,基本感觉不到延时或是掉线,所以必须对socket的连接进行监视与检测,在断线时进行重新连接, 如果用户退出登录,要将socket手动关闭,否则对服务器会造成一定的负荷。
`
TCP三次握手
`
Runtime RunTime简称运行时。是一套比较底层的纯C语言的API, Objective-C是运行在Runtime上的。 对于C语言,函数的调用在编译的时候会决定调用哪个函数。编译完成之后直接顺序执行,无任何二义性。 OC的函数调用成为消息发送。属于动态调用过程。在编译的时候并不能决定真正调用哪个函数 (事实证明,在编译阶段,OC可以调用任何函数,即使这个函数并未实现,只要申明过就不会报错。而C语言在编译阶段就会报错)。 只有在真正运行的时候才会根据函数的名称找到对应的函数来调用。
`
Runloop Runloop是事件接收和分发机制的一个实现。它提供了一种异步执行代码的机制,不能并行执行任务。 在主队列中,Main RunLoop直接配合任务的执行,负责处理UI事件、定时器以及其他内核相关事件。 RunLoop可以保证程序执行的线程不会被系统终止。所以当需要和该线程进行交互的时候才会使用Runloop, 一般情况下我们是没有必要去启用线程的RunLoop的,除非你在一个单独的线程中需要长久的检测某个事件。 每一个线程都有其对应的RunLoop,但是默认非主线程的RunLoop是没有运行的,需要为RunLoop添加至少一个事件源,然后去run它。
`
Git
`
CoreData
`
static
`
@常见算法 - 递归法、 穷举法、 贪心算法、 分治法、 动态规划法、 分支界限法、 回溯法 @常见数据结构 - 数组、 堆、 栈、 队列、 链表、 树(满二叉树、完全二叉树)、 图、 Hash表 @常见设计模式 - 代理模式(为其他对象提供一个代理以控制对这个对象的访问)、 观察者模式(定义对象间的一种一对多的依赖关系, 以便当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并自动刷新)、 单例模式(保证一个类有且仅有一个实例,并且自行实例化向整个系统提供)、 工厂模式(定义一个用于创建对象的接口,让子类决定将哪一个类实例化)、 外观模式、 适配器模式
相关文章推荐
- 从PE格式牵涉到的理论基础的概念疑惑(修改)
- IOS学习笔记 多线程基本理论基础(1)
- 理论: 图论(1): 基础概念
- iOS RunLoop基础概念
- iOS基础概念注意点
- 谈谈iOS下视图、坐标、位置相关等基础概念
- 软件测试面试必备的一些基础理论概念
- [黑马IOS自学第十篇]OC语言基础,面向对象概念,类学习
- [黑马IOS自学第九篇]OC语言基础,面向对象概念,类的创建,OC多文件开发等
- 软件测试面试必备的一些基础理论概念
- 分形理论的基础概念
- IOS开发基础概念:strong weak nonatomic atomic
- 密码学基本概念与信息理论基础学习笔记
- [黑马IOS自学第十一篇]OC语言基础,SELF关键字,面向对象概念,类学习多态,继承@property等
- iOS-网络基础概念
- iOS开发OC基础:OC属性的一些概念和基本使用
- Oracle基础理论笔记(一):模式概念
- 黑马程序员---IOS基础---数组的概念及用法
- ios-基础之【2】-类目的概念和使用
- 软件测试面试必备的一些基础理论概念