@class的作用:在头文件当中,一般只需要知道被引用的类的名称即可,不需要知道其内部的实体变量和方法,所以在头文件中一般使用@class来声明这个名称是类的名称,而在实现类的里面,因为会用到这个引用类的内部的实体变量和方法,所以需要使用#import来包含这个被引用类的头文件。(1)@class是告诉编译器,有这么一个类。(2)还可以解决循环依赖的问题。
OC不可以多继承,但是可以实现多接口,通过实现多个接口可以完成C++的多重载。
OC创建线程的方法:创建线程有三种方法:使用NSTread创建,使用GCD的dispatch、使用子类化的NSOperation,然后将其加入到NSOperationQueue;在主线程执行代码的方法是:performSelectorOnMainThread,如果想要延时执行代码可以使用performSelector;onThread;onThread;withObject;waitUntilDone。
面向连接,面向无连接:面向连接是指通信双方在通信时,事先先接力一条通信线路,其中有三个过程:建立连接,使用连接和释放连接,比如电话系统就是一个面向连接的模式,TCP协议就是一种面向连接的协议。面向无连接是指通信双方不需要事先建立一条通信线路,而是把每个带有目的的地址包(报文组)发送到线路上,有系统自主选定线路进行传输。比如邮政系统就是一种面向无连接的方式,UDP协议就是一种无连接的协议。
iOS中的几种回调机制:1.目标动作对:当两个对象之间有比较紧密的关系时,如视图控制器与其下的某个视图。2.代理,代理又叫委托,当某个对象收到多个事件,并要求同一个对象来处理所有的事件时。委托机制依赖于某个协议定义的方法来进行发送消息。3.通告机制:当需要多个对象或者两个无关对象处理同一个事件时。4.Block,适用于回调只发生一次的简单任务
自动释放池,工作原理:当我们向对象发送一个autorelease消息时,Cocoa会将该对象的一个引用放到最新的自动释放池,它仍然是个正当的对象,因此自动释放池定义的作用域内的其他对象都可以向他发送消息。当程序执行到作用域结束的位置时,自动释放池就会释放,池中的所有对象也会被释放。
http连接和socket连接:http连接就是所谓的短连接,是客户端用http协议进行请求,客户端向服务端发送一次请求,服务器端响应后连接即会断掉,以节省资源。服务器不能主动给客户端响应。
Socket连接:socket连接是所谓的长连接,是客户端跟服务器直接使用socket“套接字”进行连接,并没有规定连接后断开,所以客户端和服务器可以保持连接通道,双方都可以主动发送数据。一般多用于游戏开发或股票开发这个要求即时性很强并且发送数据量比较大的从场合使用。主要用的类是CFSocketRef.
TCP连接的三次握手:1.客户端发送syn包到服务器,并进入到syn_send状态,等待服务器确认。2.服务器收到syn包,必须确认客户的syn,同时自己也发送一个syn包,即syn+ack包,此时服务器进入syn+recv状态。3.客户端收到服务器的syn+ack包,向服务器发送确认包ack,此时发送完毕,客户端和服务器进入到established状态,完成三次握手。