简历中主要知识解析

2018-03-30  本文已影响25人  天蝎座沫沫

instruments

https://www.jianshu.com/p/e09f6d52f390

Charles

http://blog.csdn.net/wangwei1138568289/article/details/51222661

HTTP****和****HTTPS****网****络协议

http://blog.csdn.net/FreeTourW/article/details/52222213

我们的网络请求加密:随机数,时间戳,token,签名,MD5加密

ios开发中的基本设计模式(代理,观察者,MVC,单例,策略,工厂,MVVM,原型,Target-Action,通知(notification)机制)

http://blog.csdn.net/baihuaxiu123/article/details/50867427

iOS存储方式之归档

http://blog.csdn.net/cloudox_/article/details/55001487

iOS的消息推送机制到底是怎样的?

https://www.zhihu.com/question/59195951

数据存储-沙盒

· 每个应用程序的活动范围都限定在自己的沙盒里。

· 不能随意跨越自己的沙盒去访问别的应用程序沙盒中的内容。

· 应用程序向外请求或接收数据都需要经过权限认证。

简单数据存储: 沙盒,存储。NSString、NSArray、NSDictionary、NSData

复杂对象的存储:归档就是通过将复杂对象(自定义Person类型的对象)转换为NSData类型对象,遵守NSCoding协议

<pre style="background:whitesmoke">- (instancetype)initWithCoder:(NSCoder *)aDecoder//反归档</pre>

http://blog.csdn.net/a787188834/article/details/78804937

核心动画(三)关键帧动画、动画组、转场动画

属性动画,不可直接使用,改变属性值,改变动画效果

基础动画 即平移动画(2点变化)

帧动画,根据数组路径,改变运动轨迹

动画组,可以达到多种动画效果

转场动画,切换视图时添加的动画

http://blog.csdn.net/wangwei1138568289/article/details/51106492

http://blog.csdn.net/wangwei1138568289/article/details/51162714

http://blog.csdn.net/wangwei1138568289/article/details/51194463

iOS 视频剪切、旋转,视频添加音频、添加水印,视频导出

http://blog.csdn.net/wangwei1138568289/article/details/51965271

TableView的优化

http://blog.csdn.net/wangwei1138568289/article/details/51408216

iOS常用的存储方式介绍

NSUserDefaults基本的用户设置,数据量很小
Plist文件 直观的看到文件的内容,不需要经常地修改,如保存不同主题的数据
解归档 自定义的对象进行存储
手动存放沙盒 沙盒中只能保存OC中的基本数据,自定义的对象不能直接存入
CoreData

https://www.cnblogs.com/FBiOSBlog/p/5819418.html

ios开发中的基本设计模式(代理,观察者,MVC,单例,策略,工厂,MVVM,原型,Target-Action,通知(notification)机制)

http://blog.csdn.net/baihuaxiu123/article/details/50867427

代理

当一个类的某些功能需要由别的类来实现,但是又不确定具体会是哪个类实现。

1有多个相关方法2为了避免循环引用3 cellForRowAtIndexPath用代理,block会被创建多次就会造成内存占用的情况

block在使用上和代理的性质没有多大区别 其实就是开辟空间和指针指向

关键是看有没有造成空间浪费和循环引用

block 和 delegate 都可以通知外面。block 更轻型,使用更简单,能够直接访问上下文,这样类中不需要存储临时数据,使用 block 的代码通常会在同一个地方,这样读代码也连贯。delegate 更重一些,需要实现接口,它的方法分离开来,很多时候需要存储一些临时数据,另外相关的代码会被分离到各处,没有 block 好读。

观察者模式

一般为model层对,controller和view进行的通知方式,不关心谁去接收,只负责发布信息

MVC模式

数据模型,控制器逻辑,视图展示将应用程序进行逻辑划分

model-即数据模型,view-视图展示,controller进行UI展现和数据交互的逻辑控制

[图片上传失败...(image-121c9-1522397563179)]

单例模式

确保程序运行期某个类,只有一份实例,用于进行资源共享控制

策略模式

定义算法族,封装起来,使他们之间可以相互替换

实例:排序算法,NSArray的sortedArrayUsingSelector;

工厂模式

工厂负责制造各种产品,客户端,需要什么产品,工厂就会相应的生产出什么样的产品。

MVVM模式

MVVM模式是Model-View-ViewMode模式的简称。由视图(View)、视图模型(ViewModel)、模型(Model)三部分组成

[图片上传失败...(image-a4023c-1522397563179)]

在MVVM里,view和view controller正式联系在一起,我们把它们视为一个组件。视图view仍然不能直接引用模型model,当然controller也不能。相反,他们引用视图模型viewmodel。

viewmodel是一个放置用户输入验证逻辑,视图显示逻辑,发起网络请求和其他各种各样的代码的极好的地方。有一件事情不应归入view model,那就是任何视图本身的引用(不要在view model中使用 #import UIKit.h )

借助了IOS响应式编程框架ReactiveCocoa作为辅助

1. 低耦合。View可以独立于Model变化和修改,一个ViewModel可以绑定到不同的View上,当View变化的时候Model可以不变,当Model变化的时候View也可以不变。   2. 可重用性。可以把一些视图的逻辑放在ViewModel里面,让很多View重用这段视图逻辑。   3. 独立开发。开发人员可以专注与业务逻辑和数据的开发(ViewModel)。设计人员可以专注于界面(View)的设计。   4. 可测试性。可以针对ViewModel来对界面(View)进行测试

原型模式

对一个基类对象进行克隆复制创建出模型一样的副本

Target-Action模式

目标-行为,给imageView添加点击事件

通知(notification)机制

在通知机制中对某个通知感兴趣的所有对象都可以成为接受者

投送对象和接受者是一对多的关系

removeObserver:name:Object:消息解除注册,以后不再接受通知

iOS****并发编程对比总结****,NSThread,NSOperation,GCD - iOS

进程

· 正在进行中的程序被称为进程,负责程序运行的内存分配

· 每一个进程都有自己独立的虚拟内存空间

线程

· 线程是进程中一个独立的执行路径(控制单元)

· 一个进程中至少包含一条线程,即主线程

· 可以将耗时的执行路径(如:网络请求)放在其他线程中执行

创建线程的目的就是为了开启一条新的执行路径,运行指定的代码,与主线程中的代码实现同时运行

并发:指两个或多个任务在同一时间间隔内发生,但是,在任意一个时刻点上,CPU只会处理一个任务

NSThread 建立一个线程非常方便,管理多个线程难。[NSThread currentThread]当前线程

NSOperation/NSOperationQueue 使用GCD实现的,限制最大并发数量、操作之间的依赖关系

GCD 基于C语言的底层API,用Block定义任务

· 队列的特点是先进先出(FIFO)的

队列dispatch_queue_t

· 串行队列,队列中的任务只会顺序执行

· 并行队列,队列中的任务通常会并发执行

操作

· dispatch_async 异步操作,会并发执行,无法确定任务的执行顺序

· dispatch_sync 同步操作,会依次顺序执行,能够决定任务的执行顺序

注:

· http://blog.csdn.net/zyq522376829/article/details/52373154

· http://blog.csdn.net/cordova/article/details/69060085

串行队列(一个接一个,排队跑步,保持队形)

[图片上传失败...(image-f6cd2e-1522397563178)]

并行队列 并排跑,类似于赛跑)

[图片上传失败...(image-5c616e-1522397563178)]

全局队列

[图片上传失败...(image-51d29-1522397563178)]

// 全局队列与并行队列的区别

// 1> 不需要创建,直接GET就能用

// 2> 两个队列的执行效果相同

// 3> 全局队列没有名称,调试时,无法确认准确队列

// 记住:在开发中永远用DISPATCH_QUEUE_PRIORITY_DEFAULT

// 多线程的优先级反转!低优先级的线程阻塞了高优先级的线程!

主队列

[图片上传失败...(image-cf606c-1522397563178)]

// 每一个应用程序都只有一个主线程

// 在iOS开发中,所有UI的更新工作,都必须在主线程上执行!

// 异步任务,在主线程上运行,同时是保持队形的

上一篇下一篇

猜你喜欢

热点阅读