1.什么時候用copy
{
copy:分為淺復制和深復制,深復制應用計數器不變,對象被復制一份,
}
2.UIViewController,UIView的父類
3.CALayer和UIView區(qū)別
{
UIView和CALayer的那些事
1.繼承結構,uiview繼承uiresponder 可以監(jiān)聽點擊事件。
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.創(chuàng)建一個登錄界面想要界面一顯示就有鍵盤
10.控制器創(chuàng)建的方法的不同
11.drawInRect的調用,iconView繼承自UIImageView,UIImageView重寫drawInRect畫一條線,在iconView中給Image賦值,則會顯示什么樣子
12.soket和HTTp的區(qū)別
13.soket, http, tcp,udp分類,原因
14.網絡七層協議
{
由上往下:應用層、表示層、會話層、傳輸層、網絡層、數據鏈路層、物理層。
tcp協議對應的是應"傳輸層"
http協議對應的是"應用層"
ip協議對應的是"網絡層"
socket則是對TCP/IP 的封裝和應用(程序員層面上) 底層純c
TCP/IP協議是傳輸層協議,主要解決如何在網絡中傳輸。
http是應用層協議,主要解決如何包裝數據。
重點:1.理解網絡 2.理解七層協議/五層模型 3.理解Socket.
{
應用層: 規(guī)定"應用程序"的數據格式. http / ftp /email 等.? //紙條上寫的是啥?
傳輸層: 建立"端口"到"端口"之間的通信. UDP/TCP 協議."端口". //我們幫你傳紙條
網絡層: 確定每一臺計算機的位置,建立"主機"到"主機"之間的通信.IPv4協議,"IP地址".? // 女孩的位置
數據鏈路層: 確定1和0的分組方式.以太網協議:一組電信號就是一個數據包."MAC地址"/網卡/廣播. // 深情告白
物理層: 將電腦連接入網絡,傳輸電信號1和0.? ? ? // 一張白紙
互聯網分層結構的好處:
上層的變動完全不影響下層的結構.
Socket : "主機 + 端口"就是"Socket(套接字)"? ----- TCP/IP協議
}
3次握手:
1.客戶端發(fā)送syn包到服務器,客戶端進入syn_send狀態(tài),等待服務器確認
什么是syn包:
解釋:SYN是tcp、ip建立連接的時候使用的握手信號。
2.服務器收到syn包 確認客戶的syn,同時自己也發(fā)送一個syn + ack包,此時服務器進入syn_recv狀態(tài)。
3.客戶端收到syn+ack包,向服務器發(fā)送確認包ack 此包發(fā)送完畢,客戶端和服務器進入establish狀態(tài),完成三次握手
握手過程中傳送的包里不包含數據,三次握手完畢后,客戶端與服務器才正式開始傳輸數據
4次揮手:因為tcp連接是全雙工的,因此每個方向上都必須單獨進行關閉,這個原則是當一方完成
tcp連接的拆除需要發(fā)送4個包,因此稱為四次揮手,客戶端和服務端均可發(fā)起揮手操作,在socket編程中,
任何一方執(zhí)行close()操作即可產生揮手操作。
1.tcp客戶端發(fā)送一個fin,用來關閉客戶端到服務端的數據傳送。
2.服務器收到這個fin,回一個ack,確認序號為收到的序號+1;
3.服務器關閉客戶端的連接,發(fā)送一個pin可客戶端
4.客戶端,
UDP和TCP的區(qū)別:
1.tcp是基于鏈接的協議,也就是說,在正式收發(fā)數據前,必須和對方建立可靠地連接。也就是通過三次握手·。
UDP是面向非連接的協議,它不與對方建立連接,而直接把數據發(fā)送出去。
2.傳輸的重要性,可靠,不可靠。
3.速度快? 慢。
4.udp的程序結構比較簡單
5.tcp消耗的系統資源要多
http與socket區(qū)別
1.http:超文本傳輸協議,首先它是一個協議,并且是基于tcp/ip基礎上的應用層協議。tcp/ip協議是傳輸層協議,主要解決數據如何網絡數據在網絡中的傳輸,http是應用層協議,主要解決如何包裝數據,規(guī)定了瀏覽器與服務器之間通訊的規(guī)則。是萬維網交換數據的基礎,http是基于請求-響應形式并且是短連接,并且是無狀態(tài)的協議。
2.socket:socket不屬于協議范疇,而是調用了一個借口,socket是對tcp/ip協議的封裝,通過條用socket,才能使用才能使用TCP/IP協議,Socket連接是長連接,理論上客戶端和服務器端一旦建立連接將不會主動斷開此連接。Socket連接屬于請求-響應形式,服務端可主動將消息推送給客戶端。;
}
15.coredata是什么!它和SQL的區(qū)別是什么?你分別會在那個場景使用它們?
{
coreData 是ios5之后才出來的一個框架,它提供了對象,關系映射的功能,即能將oc對象轉成數據,保存在SQLite數據庫文件中,也能將保存在數據庫中的文件還原成oc對象。在此數據操作期間,我們不需要編寫任何的SQL語句,
利用coredata我們可以輕松地把數據庫中的記錄轉換為oc對象,也可以將oc對象轉換為數據庫中的記錄。
}
16.SQLite 數據庫概念
{
1.是一個輕量級的數據庫,非常的小
2.占用資源少,處理速度快。
3.
1.一個表,存放一組相同類型的數據
2.一行,一條記錄,對應著一個完整地數據模型
3.字段(列),記錄該條記錄的一個屬性值
4.主鍵
{
1.唯一標示一條記錄的
2.通常是個整數
3.通常是自動增長的
4.程序員不需要管理主鍵的數值生成
5.主鍵是由數據庫生成大的
}
增刪改查
創(chuàng)建
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插入大批量數據
{
如果不主動開啟事務,執(zhí)行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是一種數據類型。
是一個能工作的代碼單元,在任何需要的時候執(zhí)行
本質上是一個輕量級的匿名函數,既可以作為參數? 還可以作為返回值。
匿名函數。只有函數體,不具備函數名稱。
}
20,@property 的使用
{
//以前的
@property 只是給你get方法和set方法做一個聲明。
@synthesize 只是用來實現get和set方法
Xcode4.5以后@property會直接生成set方法和get方法
}
21.selector,method和message的區(qū)別
{
selector是方法名,message包括selector和方法的參數,method包括selector和方法的具體實現。
}