导航模式/持久化

导航模式

平铺模式,一般由scrollView和pageControl组合而成的展示方式。手机自带的天气比较典型。

标签模式,tabBar的展示方式,这个比较常见。

树状模式,tableView的多态展示方式,常见的9宫格、系统自带的邮箱等展现方式。

持久化方式

属性列表文件 -- NSUserDefaults 的存储,实际是本地生成一个 plist 文件,将所需属性存储在 plist 文件中

对象归档  --  本地创建文件并写入数据,文件类型不限

SQLite 数据库 -- 本地创建数据库文件,进行数据处理

CoreData  --  同数据库处理思想相同,但实现方式不同

单元测试框架

OCUnit 是 OC 官方测试框架, 现在被 XCTest 所取代。

XCTest 是与 Foundation 框架平行的测试框架。

GHUnit 是第三方的测试框架。github地址

OCMock都是第三方的测试框架。github地址

7 层协议,tcp四层协议及如何对应的?

@private、@protected与@public三者之间的区别

@private只能够使用在声明的类当中,其子类也不能够使用用@private声明的实例变量;

@protected只能在声明的类当中使用,但其子类具有使用@protected声明变量的资格;

@public可以全局使用,属性是具有全局属性的;

在OC中,引用文件可以通过#include、#import、@class三种方式。

一. #include

1. 在C语言中,我们使用#include来引入头文件。使用#include “xx.h”来引入自定义的头文件,使用#include来引入库中的头文件。

2. #include不是不能防止重复引用头文件,而是操作起来比较复杂。

3. #include:为了防止重复引用可采用:

#ifndef  ViewController_h

#define ViewController_h

#endif

二. #import

1. #import是#include的升级版,可以防止重复引入头文件这种现象的发生。

2. #import在引入头文件的时候,就是完全将头文件拷贝到现在的文件中。所以也有效率上的问题。

3. #import最大的问题在于,需要避免出现头文件递归引入的现象。(如:A引入B,B引入A,那么A、B的头文件会互相不停的拷贝)

三.@class

1. @class用来告诉编译器,有这样一个类,使书写代码时,不报错。

但是@class只是使导入的类名在引用时不受影响,不能创建该类的对象,因为创建对象时也需要访问其内部方法。

2. 因为#import引入头文件有效率问题,所以,当还没有调用类中方法,仅仅是定义类变量的时候,使用@class来提醒编译器。而在真正需要调用类方法的时候,进行#import。

3. 如果A是B的父类,那么这是在B.h中就必须要使用#import来引入A的头,因为需要知道A类中有哪些变量和方法,以免B类中重复定义。

Socket

建立Socket通信是至少需要一对套接字, 其中一个是运行在我们的客户端上, 称为Client Socket, 还有一个是运行在服务器上, 称为Service Socket.

Socket之间的连接过程分为三个过程:

服务器监听、客户端请求、连接确认。

Socket同时支持TCP和UDP两种传输协议, 啥意思呢?

当Socket使用TCP协议通信的时候, Socket就是一个TCP的连接, 那么如果Socket使用的是UDP协议通信, 那么这时候的Socket就是UDP连接

网络的协议,从上往下分的话:

应用层、表达层、会话层、传输层、网络层、数据链路层、物理层。

但我们通常会把底下三层(网络层, 数据链路层, 物理层)统称为媒体层, 一般都是专门搞网络的网络工程师大神们研究的对象;而上面四层(传输层, 会话层, 表示层, 应用层)被称为主机层, 也是广大用户所面向和关心的内容。

HTTP:

HTTP协议: 它是对应着应用层.

TCP协议: 它是对应着传输层.

IP协议: 则对应着网络层.

而HTTP协议是基于TCP连接的, 所以三者根本就没啥可比性.

TCP/IP协议: 属于传输层协议, 主要解决数据如何在网络中传输.

HTTP协议: 属于应用层, 主要解决如何包装数据.

而Socket是应用层与TCP/IP协议族通信中间的软件抽象层, 是它的一组接口

TCP/IP五层模型

应用层、传输层、网络层、数据链路层、物理层。

物理层: 中继器, 集线器, 双绞线

数据链路层: 以太网交换机(Modem), 网卡(网卡有一半是工作在物理层)

网络层: 路由器, 三层交换机

传输层: 四层交换机, 路由器(也有一些特殊的路由器在传输层中工作)

其中TCP/IP的应用层比较特殊, 它是包含了会话层, 表达层, 应用层等功能, 这里要说一点, TCP/IP协议并不能在传输层总是保证可靠的传输数据包, 但七层模型可以做到.

TCP/IP还提供了另一种传输模式, 叫做UDP(用户数据报协议), 但这种协议不能保证可靠的数据包传输

TCP: 面向连接, 提供可靠的数据传输, 用于传输大量数据, 使用数据流模式, 速度慢, 建立连接时开销较大

UDP: 非面向连接, 传输不可靠, 用于传输少量的数据, 速度快。

TCP是一个数据流的模式协议, 而UDP是一种数据报模式的协议.

总的来说TCP是一个数据流的模式协议, 而UDP是一种数据报模式的协议。刚刚说了Socket是基于TCP/IP协议上的抽象, 也就是说Socket只是对TCP/IP的封装, 本身是没有协议的, 只有通过Socket API, 我们才能够使用TCP/IP协议。

沙盒

每个iOS程序都有一个独立的文件系统(存储空间),而且只能在对应的文件系统中进行操作,此区域被称为沙盒。应用必须待在自己的沙盒里,其他应用不能访问该沙盒。所有的非代码文件都要保存在此,例如属性文件plist、文本文件、图像、图标、媒体资源等。

沙盒中相关路径

AppName.app应用程序的程序包目录,包含应用程序的本身。由于应用程序必须经过签名,所以不能在运行时对这个目录中的内容进行修改,否则会导致应用程序无法启动。

Documents/保存应用程序的重要数据文件和用户数据文件等。用户数据基本上都放在这个位置(例如从网上下载的图片或音乐文件),该文件夹在应用程序更新时会自动备份,在连接iTunes时也可以自动同步备份其中的数据。

Library:这个目录下有两个子目录,可创建子文件夹。可以用来放置您希望被备份但不希望被用户看到的数据。该路径下的文件夹,除Caches以外,都会被iTunes备份.

Library/Caches:  保存应用程序使用时产生的支持文件和缓存文件(保存应用程序再次启动过程中需要的信息),还有日志文件最好也放在这个目录。iTunes 同步时不会备份该目录并且可能被其他工具清理掉其中的数据。

Library/Preferences: 保存应用程序的偏好设置文件。NSUserDefaults类创建的数据和plist文件都放在这里。会被iTunes备份。

tmp/: 保存应用运行时所需要的临时数据。不会被iTunes备份。iPhone重启时,会被清空。

// 获取沙盒根目录路径NSString*homeDir=NSHomeDirectory();

// 获取Documents目录路径NSString*docDir=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)firstObject];/

/获取Library的目录路径NSString*libDir=[NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,NSUserDomainMask,YES)lastObject];

// 获取cache目录路径NSString*cachesDir=[NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask,YES)firstObject];

// 获取tmp目录路径NSString*tmpDir=NSTemporaryDirectory();

// 获取应用程序程序包中资源文件路径的方法:NSString*bundle=[[NSBundle mainBundle]bundlePath];

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 224,861评论 6 522
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 96,263评论 3 402
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 172,033评论 0 366
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 60,999评论 1 300
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 70,000评论 6 400
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 53,483评论 1 314
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 41,850评论 3 428
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 40,827评论 0 279
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 47,366评论 1 324
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 39,404评论 3 346
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 41,525评论 1 355
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 37,130评论 5 351
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 42,853评论 3 338
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 33,293评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 34,426评论 1 276
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 50,082评论 3 381
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 46,590评论 2 366