1、在某個方法中self.name = _name、name = _name,他們的區別是:
前者是存在內存管理中的,他會對name進行保留或者拷貝;而後者只是普通的賦值;
2、對象歸檔:
是數據持久化的一種方法,他的特點是給歸檔的對象進行加密,增強數據的安全性。此外,自定義的類的對象進行歸檔,必須實現NSCoding協議。
3、鍵路徑:
是一個用點做分隔符鍵組成的字符串,用於指定一個連接在一起的對象性質序列。
4、深拷貝,淺拷貝:
深拷貝:拷貝出來的是對象內容,
淺拷貝:拷貝出來的是指針。
5、iOS的動態性:
(1)動態類型:如id類型,運行時才決定對象的接受者的類型;
(2)動態綁定:就是程序在運行時根據需要去調用所需要的方法;
(3)動態載入:讓程序在運行時添加代碼模塊以及其他資源。
6、什麼是安全釋放?
就是把對象release後,再置爲nil;
7、Runloop是什麼?
Runloop是一個事件處理的循環,用來不停的調度工作以及處理輸入時間,目的是爲了減少CPU無謂的空轉,每個線程默認都有一個Runloop,主線程的runloop是默認開啓的,而子線程的runnloop是需要我們手動去開啓的。調用開啓方法:API [[nsrUNLOOP CURRENTrUNLOOP] run];
8、寫出應用程序按Home鍵進入後臺和前臺的生命週期:
(1)應用程序將要不活躍
- (void)applicationWillResignActive:(UIApplication *)application;
應用程序以及不活躍,進入後臺
- (void)applicationDidEnterBackground:(UIApplication *)application;
(2)應用程序將要進入前臺
- (void)applicationWillEnterForground:(UIApplication *)application;
應用程序進入前臺,開始活躍
- (void)applicationDidBecomeActive:(UIApplication *)application;
在OC中,只要是alloc/retain/copy的對象,都要發送release消息,當對象唄發送release消息時,他並不會被立即銷燬,而是被放進了釋放池中,當釋放池被銷燬時,纔會向池中的對象發送release消息,當池中對象的引用計數爲0時,系統纔會調用delloc,將對象和對象所擁有的實力釋放掉。
13、TCP協議:面向連接、可靠的、基於字節流的運輸層的通信協議;
UDP協議:是用戶數據包協議,是一種無連接的傳輸層協議;
面向連接:指的是通信雙方在通信時,要事先建立一條通信線路(建立連接,使用連接,釋放連接)
面向無連接:是指通信雙方不需要建立一條通信線路。
14、沙盒:
iOS應用系統爲每一個應用程序只能在爲該程序創建的應用文件系統中讀取文件,不可以去其他地方訪問,此區域稱爲沙盒。
15.多線程:
NSThread:輕量級的線程,需要自己管理線程的生命週期;
NSOPerationQueue:是一個操作隊列,用來管理一組OPeration對象的執行,會根據需要開闢合適數量的線程執行任務。
GCD:核心是往dispatch_queue裏添加要執行的任務,然後由queue來管理調度任務的執行。
Serial:串行隊列,依次執行
Concurrent:並行隊列,同時執行
併發:能同時執行多個任務
不併發:任務只能順序執行
線程同步:依次執行
線程異步:同時進行
16、進程與線程的區別:
線程是進程的一部分,進程是程序的一部分。
進程有獨立的地址空間,一個進程崩潰後,在保護模式下,不會對其他進程產生影響,而線程只是進程中的一個執行路徑。
線程有自己的堆棧和局部變量,主線程死掉就等於整個進程死掉。