您的位置:首页 > 移动开发 > IOS开发

IOS杂谈

2014-02-19 11:58 239 查看
三次握手


第一次

第一次握手:建立连接时





三次握手

客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认


第二次

第二次握手服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;


第三次

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

完成三次握手,客户端与服务器开始传送数据


交换机和路由器的区别是什么?

路由器是通过IP寻址,交换机是通过Mac寻址。路由器支持NAT

三层交换机既支持NAT也支持IP寻址


HTTP协议简述

HTTP:超文本传输协议(Hypertext Transfer Protocol)。
l 基于应用层的协议,在上网浏览网页的时候,浏览器和web
服务器之间通过HTTPInternet上进行数据的发送和接收。
l 基于请求/响应模式的、无状态的协议

浏览器与服务器通信过程:
1、 客户发起连接
2、 客户发送请求
3、 服务器响应请求
4、 服务器关闭连接


ios7和ios6有什么区别

1.主屏幕,IOS7比IOS6的屏幕更加明亮,多一个桌面启动器,单个图标的像素更大了,最下层采用“磨砂板”设计
2.颜色和边界,IOS舍弃了边界,依靠色彩还体现交互
3.扁平化
4.明亮度 IOS7 比6更加明亮,界面也看起来更开阔,整体的界面风格也更加均匀
从本质上来说,iOS
7舍弃了人工制品的花哨,回归到了设计的本质,致力于追求简单,达到直击内容的目的。

NSString与NSMutableString的区别

当你使用不可变的NSString class时,替换旧的字符串的唯一方式就是创建一个新的字符串然后更新你的变量“str2”

来指向这个新的字符串。这个操作不会影响“str1”所指向的内容,因此它将继续指向初始的字符串。

在NSMutableString的例子里,我们没有创建第二个字符串,而是通过改变已经存在的可变字符串“str2”的内容来代替。

由于str1和str2两个变量都仍然指向同一个字符串对象,从nslog中可以看到它们值都将会被更新。

理解指针变量和它实际指向对象的不同是非常重要的。一个NSString对象是不可变的,但是这并不阻止你改变指向这个不

可变对象的指针的值。

"NSString *"这个数据类型代表一个NSString对象的指针,不是NSString对象本身。

"NSMutableString *"这个数据类型则是代表"NSMutableString"对象本身,这两者是有区别的。

MVC是什么?有什么特性?为什么在iPhone上被广泛运用?

MVC设计模式考虑三种对象:模型对象、视图对象、和控制器对象。模型对象代表 特别的知识和专业技能,它们负责保有应用程序的数据和定义操作数据的逻辑。视图对象知道如何显示应用程序的模型数据,而且可能允许用户对其进行编辑。控制 器对象是应用程序的视图对象和模型对象之间的协调者


iOS平台怎么做数据的持久化?Core Data和SQLite有无必然联系?Core Data是一个关系型数据库吗?

数据的持久化本质上都是就是写文件,但从逻辑上又分成很多种,比如写入沙盒(其实是一个本应用程序才可以访问的路径),比如存到网络上,比如写入数据库。

Core data与sqlite还是有联系的,core data 是对sqlite的封装,因为sqlite是c语言的api,然而有人也需要obj-c 的api,所以有了 core data 另外,core data不仅仅是把c的api翻译成oc 的api,还提供了一些管理的功能,使用更加方便。


内存管理的几条原则时什么?按照默认法则.那些关键字生成的对象需要手动释放?在和property结合的时候怎样有效的避免内存泄露?

谁申请,谁释放

遵循CocoaTouch的使用原则;

内存管理主要要避免“过早释放”和“内存泄漏”,对于“过早释放”需要注意@property设置特性时,一定要用对特性关键字,对于“内存泄漏”,一定要申请了要负责释放,要细心。

关键字alloc 或new 生成的对象需要手动释放;

设置正确的property属性,对于retain需要在合适的地方释放,
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: