1.什么时候用copy
{
copy:分为浅复制和深复制,深复制应用计数器不变,对象被复制一份,
}
2.UIViewController,UIView的父类
3.CALayer和UIView区别
{
UIView和CALayer的那些事
1.继承结构,uiview继承uiresponder 可以监听点击事件。
CALayer继承nsobject 所以不能点击时间
2.所属的框架不同,calayer是coresi 2d。而uiview 属于uikit框架。uikit主要是构建用户界面,响应事件的。
而corez2d 属于一个低级的,绘制内容的对象
UIView来自CALayer,高于CALayer,是CALayer高层实现与封装。UIView的所有特性来源于CALayer支持
}
4.消息响应机制
5.block
6.self.属性,和_属性
7.layoutSubView什么时候调用
8.UIView有个属性window
9.创建一个登录界面想要界面一显示就有键盘
10.控制器创建的方法的不同
11.drawInRect的调用,iconView继承自UIImageView,UIImageView重写drawInRect画一条线,在iconView中给Image赋值,则会显示什么样子
12.soket和HTTp的区别
13.soket, http, tcp,udp分类,原因
14.网络七层协议
{
由上往下:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。
tcp协议对应的是应"传输层"
http协议对应的是"应用层"
ip协议对应的是"网络层"
socket则是对TCP/IP 的封装和应用(程序员层面上) 底层纯c
TCP/IP协议是传输层协议,主要解决如何在网络中传输。
http是应用层协议,主要解决如何包装数据。
重点:1.理解网络 2.理解七层协议/五层模型 3.理解Socket.
{
应用层: 规定"应用程序"的数据格式. http / ftp /email 等. //纸条上写的是啥?
传输层: 建立"端口"到"端口"之间的通信. UDP/TCP 协议."端口". //我们帮你传纸条
网络层: 确定每一台计算机的位置,建立"主机"到"主机"之间的通信.IPv4协议,"IP地址". // 女孩的位置
数据链路层: 确定1和0的分组方式.以太网协议:一组电信号就是一个数据包."MAC地址"/网卡/广播. // 深情告白
物理层: 将电脑连接入网络,传输电信号1和0. // 一张白纸
互联网分层结构的好处:
上层的变动完全不影响下层的结构.
Socket : "主机 + 端口"就是"Socket(套接字)" ----- TCP/IP协议
}
3次握手:
1.客户端发送syn包到服务器,客户端进入syn_send状态,等待服务器确认
什么是syn包:
解释:SYN是tcp、ip建立连接的时候使用的握手信号。
2.服务器收到syn包 确认客户的syn,同时自己也发送一个syn + ack包,此时服务器进入syn_recv状态。
3.客户端收到syn+ack包,向服务器发送确认包ack 此包发送完毕,客户端和服务器进入establish状态,完成三次握手
握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传输数据
4次挥手:因为tcp连接是全双工的,因此每个方向上都必须单独进行关闭,这个原则是当一方完成
tcp连接的拆除需要发送4个包,因此称为四次挥手,客户端和服务端均可发起挥手操作,在socket编程中,
任何一方执行close()操作即可产生挥手操作。
1.tcp客户端发送一个fin,用来关闭客户端到服务端的数据传送。
2.服务器收到这个fin,回一个ack,确认序号为收到的序号+1;
3.服务器关闭客户端的连接,发送一个pin可客户端
4.客户端,
UDP和TCP的区别:
1.tcp是基于链接的协议,也就是说,在正式收发数据前,必须和对方建立可靠地连接。也就是通过三次握手·。
UDP是面向非连接的协议,它不与对方建立连接,而直接把数据发送出去。
2.传输的重要性,可靠,不可靠。
3.速度快 慢。
4.udp的程序结构比较简单
5.tcp消耗的系统资源要多
http与socket区别
1.http:超文本传输协议,首先它是一个协议,并且是基于tcp/ip基础上的应用层协议。tcp/ip协议是传输层协议,主要解决数据如何网络数据在网络中的传输,http是应用层协议,主要解决如何包装数据,规定了浏览器与服务器之间通讯的规则。是万维网交换数据的基础,http是基于请求-响应形式并且是短连接,并且是无状态的协议。
2.socket:socket不属于协议范畴,而是调用了一个借口,socket是对tcp/ip协议的封装,通过条用socket,才能使用才能使用TCP/IP协议,Socket连接是长连接,理论上客户端和服务器端一旦建立连接将不会主动断开此连接。Socket连接属于请求-响应形式,服务端可主动将消息推送给客户端。;
}
15.coredata是什么!它和SQL的区别是什么?你分别会在那个场景使用它们?
{
coreData 是ios5之后才出来的一个框架,它提供了对象,关系映射的功能,即能将oc对象转成数据,保存在SQLite数据库文件中,也能将保存在数据库中的文件还原成oc对象。在此数据操作期间,我们不需要编写任何的SQL语句,
利用coredata我们可以轻松地把数据库中的记录转换为oc对象,也可以将oc对象转换为数据库中的记录。
}
16.SQLite 数据库概念
{
1.是一个轻量级的数据库,非常的小
2.占用资源少,处理速度快。
3.
1.一个表,存放一组相同类型的数据
2.一行,一条记录,对应着一个完整地数据模型
3.字段(列),记录该条记录的一个属性值
4.主键
{
1.唯一标示一条记录的
2.通常是个整数
3.通常是自动增长的
4.程序员不需要管理主键的数值生成
5.主键是由数据库生成大的
}
增删改查
创建
CREATE TABLE IF NOT EXISTS "TABLE名" ("id" INTEGER NOT NULL PRIMARY AUTOINCREMENT ,"name" TEXT)
删除表:
DROP TABLE IF EXISTS TABLE名
1.增加:INSERT INTO TABLE名 (name,age,height) VALUES ('LIZAIYU',23,1.8);
2.修改:UPDATE TABLE名 SET name = 'wangwu',age = 12 WHERE id = 1;
3.删除:DELETE FROM TABLE名 WHERE id = 1;
4.查询:SELECT * FROM T_STUDNET
服务器的锁为排他锁,
}
17.往SQLite插入大批量数据
{
如果不主动开启事务,执行insert 和update指令的时候,回味每一条数据开启事务,
主动开启事务,在这期间就不用自动开启事务。
1.开始事务 2.提交事务
事务:是为了插入数据过程中失败,造成数据混乱的情况。
做了一个快照,相当于一个备份,开始插入。插入成功 快照就没了,失败就恢复过来。
}
18.关于地图定位
{
1.mapkit框架用来展示地图
2.corelocation 用来地理定位
lbs :locationbasedservice
solomo :所罗门(social local mobile)
cllocationmanager 对象做用户的定位。
ios8开始,定位分为两种情况,总是使用用户位置:NSLOCationalwaysusagedescription
当使用时才定位:NSLocationWhenInUseDescription
使用clgeocoder 可以完成“地理编码”和“反地理编码”
地理编码方法:根据地名,获取具体的位置信息(比如说,经纬度,地址的全称);
反地理编码:根据经纬度,获取具体的位置信息。
mapKit框架的使用
1.MKMapView专门用于地图的显示。
2.设置用户追踪模式属性,可以跟踪用户的当前位置。
3.可以设值地图类型,mapViewType设置地图类型。
}
19.什么是block?
{
Block是一种数据类型。
是一个能工作的代码单元,在任何需要的时候执行
本质上是一个轻量级的匿名函数,既可以作为参数 还可以作为返回值。
匿名函数。只有函数体,不具备函数名称。
}
20,@property 的使用
{
//以前的
@property 只是给你get方法和set方法做一个声明。
@synthesize 只是用来实现get和set方法
Xcode4.5以后@property会直接生成set方法和get方法
}
21.selector,method和message的区别
{
selector是方法名,message包括selector和方法的参数,method包括selector和方法的具体实现。
}