文/Peter__Pan(簡(jiǎn)書作者)
原文鏈接:http://www.reibang.com/p/e7ac8126a15c
從中摘取了一些辟狈。
O、簡(jiǎn)述MVC模式中M夏跷、V哼转、C分別指代什么及發(fā)揮的作用?
MVC開始是存在于Desktop(桌面)程序中的槽华,M是指數(shù)據(jù)模型壹蔓,V是指用戶界面,
C則是控制器猫态,使用MVC的目的是將M和V的實(shí)現(xiàn)代碼分離佣蓉。C存在的目的則是確保M和V
的同步,一旦M改變亲雪,V應(yīng)該同步更新勇凭。
視圖是用戶看到并與之交互的界面,視圖沒(méi)有真正的處理發(fā)生义辕,不管這些數(shù)據(jù)是聯(lián)機(jī)存儲(chǔ)的還
是一個(gè)雇員列表虾标,作為視圖來(lái)講,它只是作為一種輸出數(shù)據(jù)并允許用戶操縱的方式灌砖。
模型表示企業(yè)數(shù)據(jù)和業(yè)務(wù)規(guī)則璧函,模型返回的數(shù)據(jù)是中立的,就是說(shuō)模型與數(shù)據(jù)格式無(wú)關(guān)基显,這樣一個(gè)
模型能為多個(gè)視圖提供數(shù)據(jù)蘸吓,由于應(yīng)用于模型的代碼只需寫一次就可以被多個(gè)視圖重用
,所以減少了代碼的重復(fù)性撩幽。
控制器接受用戶的輸入并調(diào)用模型和視圖去完成用戶的需求库继,控制器本身不輸出任何東西和做任何處理。
它只是接收請(qǐng)求并決定調(diào)用哪個(gè)模型構(gòu)件去處理請(qǐng)求摸航,然后再確定用哪個(gè)視圖來(lái)顯示返回的數(shù)據(jù)制跟。
1、MVC是什么酱虎?有什么特性?
MVC是一種設(shè)計(jì)形式擂涛,由模型读串、視圖聊记、控制器3部分組成。
模型:保存應(yīng)用程序數(shù)據(jù)的類恢暖,處理業(yè)務(wù)邏輯的類
視圖:窗口排监,控件和其他用戶能看到的并且能交互的元素
控制器:將模型和試圖綁定在一起,確定如何處理用戶輸入的類
2杰捂、內(nèi)存管理的幾條原則時(shí)什么舆床?
誰(shuí)申請(qǐng),誰(shuí)釋放
遵循Cocoa Touch的使用原則嫁佳;
內(nèi)存管理主要要避免“過(guò)早釋放”和“內(nèi)存泄漏”挨队,對(duì)于“過(guò)早釋放”需要注意@property設(shè)置特性時(shí),
一定要用對(duì)特性關(guān)鍵字蒿往,對(duì)于“內(nèi)存泄漏”盛垦,一定要申請(qǐng)了要負(fù)責(zé)釋放,要細(xì)心瓤漏。
3腾夯、如何對(duì)iOS設(shè)備進(jìn)行性能測(cè)試?
Profile-> Instruments ->Time Profiler
4、描述一下iOS SDK中如何實(shí)現(xiàn)MVC的開發(fā)模式
MVC是模型蔬充、試圖蝶俱、控制開發(fā)模式,對(duì)于iOS SDK饥漫,所有的View都是視圖層的榨呆,它應(yīng)該獨(dú)立于模型層,
由視圖控制層來(lái)控制趾浅。所有的用戶數(shù)據(jù)都是模型層愕提,它應(yīng)該獨(dú)立于視圖。所有的ViewController都是
控制層皿哨,由它負(fù)責(zé)控制視圖浅侨,訪問(wèn)模型數(shù)據(jù)
5、**iPhone5 的屏幕分辨率大小為 1136* 640 **
屏幕分辨率:用于量度位圖圖像內(nèi)數(shù)據(jù)量多少的一個(gè)參數(shù)证膨。通常表示成ppi(每英寸像素Pixel per inch)如输。
屏幕物理尺寸不變,分辨率越高央勒,每單位面積內(nèi)包含的細(xì)節(jié)(像素點(diǎn))越多不见。
6、OSI(Open System Interconnection)開放式系統(tǒng)互聯(lián)參考模型 把網(wǎng)絡(luò)協(xié)議從邏輯上分為了7層崔步,試列舉常見的應(yīng)用層協(xié)議稳吮。
在開放系統(tǒng)互連(OSI)模型中的最高層,為應(yīng)用程序提供服務(wù)以保證通信井濒,但不是進(jìn)行通信的應(yīng)用程序本身灶似。
Telnet協(xié)議是TCP/IP協(xié)議族中的一員列林,是Internet遠(yuǎn)程登陸服務(wù)的標(biāo)準(zhǔn)協(xié)議和主要方式。它為用戶提供了
在本地計(jì)算機(jī)上完成遠(yuǎn)程主機(jī)工作的能力酪惭。
FTP文件傳輸協(xié)議是TCP/IP網(wǎng)絡(luò)上兩臺(tái)計(jì)算機(jī)傳送文件的協(xié)議希痴,F(xiàn)TP是在TCP/IP網(wǎng)絡(luò)和INTERNET上最早
使用的協(xié)議之一,它屬于網(wǎng)絡(luò)協(xié)議組的應(yīng)用層春感。
HTTP-Hypertext transfer protocol超文本傳輸協(xié)議, 是分布式砌创,協(xié)作式,超媒體系統(tǒng)應(yīng)用之間
的通信協(xié)議鲫懒。是萬(wàn)維網(wǎng)(world wide web)交換信息的基礎(chǔ)嫩实。
SMTP(Simple MailTransfer Protocol)即簡(jiǎn)單郵件傳輸協(xié)議,它是一組用于由源地址到目的地址
傳送郵件的規(guī)則,由它來(lái)控制信件的中轉(zhuǎn)方式刀疙,它幫助每臺(tái)計(jì)算機(jī)在發(fā)送或中轉(zhuǎn)信件時(shí)找到下一個(gè)目的地舶赔。
TIME protocol(時(shí)間協(xié)議)是一個(gè)在RFC 868內(nèi)定義的網(wǎng)絡(luò)協(xié)議。它用作提供機(jī)器可讀的日期時(shí)間資訊谦秧。
DNS 是域名系統(tǒng) (Domain NameSystem) 的縮寫竟纳,是因特網(wǎng)的一項(xiàng)核心服務(wù),它作為可以將域名和
IP地址相互映射的一個(gè)分布式數(shù)據(jù)庫(kù)疚鲤。
SNMP(Simple Network ManagementProtocol,簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議)的前身是簡(jiǎn)單網(wǎng)關(guān)監(jiān)控
協(xié)議(SGMP)锥累,用來(lái)對(duì)通信線路進(jìn)行管理。
TFTP(Trivial FileTransfer Protocol,簡(jiǎn)單文件傳輸協(xié)議)是TCP/IP協(xié)議族中的一個(gè)用來(lái)在客戶
機(jī)與服務(wù)器之間進(jìn)行簡(jiǎn)單文件傳輸?shù)膮f(xié)議集歇,提供不復(fù)雜桶略、開銷不大的文件傳輸服務(wù)。端口號(hào)為69诲宇。
7际歼、網(wǎng)絡(luò)傳輸層協(xié)議中,基于TCP/IP協(xié)議和UDP/IP的連接有什么區(qū)別姑蓝?
TCP:TransmissionControl Protocol 傳輸控制協(xié)議TCP是一種面向連接(連接導(dǎo)向)的鹅心、
可靠的、基于字節(jié)流的運(yùn)輸層(Transport layer)通信協(xié)議纺荧,由IETF的RFC 793說(shuō)明(specified)旭愧。
UDP 是User DatagramProtocol的簡(jiǎn)稱, 中文名是用戶數(shù)據(jù)包協(xié)議宙暇,是OSI 參考模型中一種無(wú)連接的傳輸層協(xié)
議输枯,提供面向事務(wù)的簡(jiǎn)單不可靠信息傳送服務(wù),IETF RFC 768是UDP的正式規(guī)范占贫。
面向連接:是指通信雙方在通信時(shí)桃熄,要事先建立一條通信線路,其有三個(gè)過(guò)程:建立連接型奥、使用連接和釋放連接
蜻拨。電話系統(tǒng)是一個(gè)面向連接的模式池充,撥號(hào)桩引、通話缎讼、掛機(jī);TCP協(xié)議就是一種面向連接的協(xié)議坑匠。
面向無(wú)連接:是指通信雙方不需要事先建立一條通信線路血崭,而是把每個(gè)帶有目的地址的包(報(bào)文分組)送到線路上,
由系統(tǒng)自主選定路線進(jìn)行傳輸厘灼。郵政系統(tǒng)是一個(gè)無(wú)連接的模式夹纫,天羅地網(wǎng)式的選擇路線,天女散花式的傳播形式设凹;
IP舰讹、UDP協(xié)議就是一種無(wú)連接協(xié)議。
8闪朱、iOS中有哪些回調(diào)機(jī)制月匣,并作簡(jiǎn)單的比較。
各種回調(diào)機(jī)制的比較:
1)目標(biāo)動(dòng)作對(duì):當(dāng)兩個(gè)對(duì)象之間有比較緊密的關(guān)系時(shí)奋姿,如視圖控制器與其下的某個(gè)視圖锄开。
2)代理:也叫委托,當(dāng)某個(gè)對(duì)象收到多個(gè)事件称诗,并要求同一個(gè)對(duì)象來(lái)處理所有事件時(shí)萍悴。
委托機(jī)制依賴于某個(gè)協(xié)議定義的方法來(lái)發(fā)送消息。
3)通告機(jī)制:當(dāng)需要多個(gè)對(duì)象或兩個(gè)無(wú)關(guān)對(duì)象處理同一個(gè)事件時(shí)寓免。
4)Block或者閉包:適用于回調(diào)只發(fā)生一次的簡(jiǎn)單任務(wù)癣诱。
9、列出在編碼中哪些編碼習(xí)慣有助于提高代碼質(zhì)量袜香、軟件性能和健壯性撕予,減少程序崩潰。
- 使用嚴(yán)格的命名規(guī)則(如匈牙利命名法)能夠避免不必要的類型轉(zhuǎn)換錯(cuò)誤困鸥。
- 在編碼前先設(shè)計(jì)好流程圖或使用偽代碼嗅蔬,清晰化整個(gè)設(shè)計(jì)意圖。
- 對(duì)自己的代碼進(jìn)行嚴(yán)格的單元測(cè)試(unit testing)疾就。
單元測(cè)試是指對(duì)軟件中的最小可測(cè)試單元進(jìn)行檢查和驗(yàn)證澜术。如C語(yǔ)言中單元指一個(gè)函數(shù),Java里單元指一個(gè)類猬腰,圖形化的軟件中可以指一個(gè)窗口或一個(gè)菜單等鸟废。總的來(lái)說(shuō)姑荷,單元就是人為規(guī)定的最小的被測(cè)功能模塊盒延。 單元測(cè)試是在軟件開發(fā)過(guò)程中要進(jìn)行的最低級(jí)別的測(cè)試活動(dòng)缩擂,軟件的獨(dú)立單元將在與程序的其他部分相隔離的情況下進(jìn)行測(cè)試。
- 異常的處理首先不要輕易使用異常的捕獲添寺,其次要盡可能捕獲具體的異常胯盯。對(duì)于異常的處理最好能夠采用封裝的方式,大家統(tǒng)一使用计露。這樣可以保證異常處理的一致性也可以保證當(dāng)異常出現(xiàn)時(shí)性能的穩(wěn)定博脑。
- 使用內(nèi)省的方法檢查方法的輸入
- 采用增量式的編程方式。采用增量式編程和測(cè)試票罐,會(huì)傾向于創(chuàng)建更小的方法和更具內(nèi)聚性的類叉趣。你應(yīng)該經(jīng)常評(píng)估代碼質(zhì)量,并不時(shí)的進(jìn)行許多小調(diào)整该押,而不是一次修改許多東西疗杉。在寫了幾行代碼之后,就應(yīng)該進(jìn)行一次構(gòu)建/測(cè)試蚕礼。在沒(méi)有得到反饋時(shí)烟具,你不要走的太遠(yuǎn)。
- 使用工具(如
Instrument
)來(lái)幫助檢查內(nèi)存泄漏闻牡、過(guò)早釋放內(nèi)存净赴、CPU使用效率等問(wèn)題。 - 消除所有的編譯警告罩润,警告就是錯(cuò)誤玖翅。
- 寫防御性的代碼,使用內(nèi)省的方法檢查傳入的參數(shù)割以。
10金度、 堆和棧的區(qū)別?
管理方式:
- 對(duì)于棧來(lái)講严沥,是由編譯器自動(dòng)管理猜极,無(wú)需我們手工控制;
- 對(duì)于堆來(lái)說(shuō)消玄,釋放工作由程序員控制跟伏,容易產(chǎn)生memory leak。
申請(qǐng)大恤婀稀:
- 棧:棧是向低地址擴(kuò)展的數(shù)據(jù)結(jié)構(gòu)受扳,是一塊連續(xù)的內(nèi)存的區(qū)域
- 堆:是向高地址擴(kuò)展的數(shù)據(jù)結(jié)構(gòu),是不連續(xù)的內(nèi)存區(qū)域兔跌。
分配方式:
- 堆: 都是動(dòng)態(tài)分配的 勘高,動(dòng)態(tài)分配由alloc函數(shù)進(jìn)行分配
- 棧: 的動(dòng)態(tài)分配由編譯器進(jìn)行釋放,無(wú)需我們手工實(shí)現(xiàn)
11、kvc和kvo的區(qū)別华望?
kvc:鍵值編碼蕊蝗,是一種間接訪問(wèn)對(duì)象的屬性,使用字符串來(lái)標(biāo)示屬性
kvo:鍵值觀察機(jī)制赖舟,提供了觀察某一屬性變化的方法
12蓬戚、線程和進(jìn)程的區(qū)別?
·主要不同的是操作系統(tǒng)資源管理方式
·線程是一個(gè)進(jìn)程中不同的執(zhí)行路徑建蹄,線程有自己的堆碌更、局部變量
·進(jìn)程有獨(dú)立的地址空間,一個(gè)線程死掉洞慎,整個(gè)進(jìn)程就會(huì)死掉
13、
類別的作用嘿棘?
有時(shí)我們需要在一個(gè)已經(jīng)定義好的類中增加一些方法劲腿,
而不想去重寫該類∧衩睿可以使用類別對(duì)該類擴(kuò)充新的方法焦人。
*注意:類別只能擴(kuò)充方法,而不能擴(kuò)充成員變量重父。
代理的作用
委托代理(delegate)花椭,目的是改變和傳遞控制鏈
顧名思義,把某個(gè)對(duì)象要做的事情委托給別的對(duì)象去做房午。
那么別的對(duì)象就是這個(gè)對(duì)象的代理矿辽,代替它來(lái)打理要做
的事。反映到程序中郭厌,首先要明確一個(gè)對(duì)象的委托方是
哪個(gè)對(duì)象袋倔,委托所做的內(nèi)容是什么。
委托機(jī)制是一種設(shè)計(jì)模式折柠。
多態(tài):子類的指針可以賦值給父類 或者 父類引用指向子類對(duì)象
14.鏈表和數(shù)組的區(qū)別在哪里?
二者都屬于一種數(shù)據(jù)結(jié)構(gòu)
- 從邏輯結(jié)構(gòu)來(lái)看
數(shù)組必須事先定義固定的長(zhǎng)度(元素個(gè)數(shù))宾娜,不能適應(yīng)數(shù)據(jù)動(dòng)態(tài)地增減的
情況。當(dāng)數(shù)據(jù)增加時(shí)前塔,可能超出原先定義的元素個(gè)數(shù)承冰;當(dāng)數(shù)據(jù)減少時(shí),造
成內(nèi)存浪費(fèi)巷懈;數(shù)組可以根據(jù)下標(biāo)直接存取该抒。
鏈表動(dòng)態(tài)地進(jìn)行存儲(chǔ)分配,可以適應(yīng)數(shù)據(jù)動(dòng)態(tài)地增減的情況凑保,且可以方便
地插入、刪除數(shù)據(jù)項(xiàng)。(數(shù)組中插入、刪除數(shù)據(jù)項(xiàng)時(shí)笨忌,需要移動(dòng)其它數(shù)據(jù)
項(xiàng)便脊,非常繁瑣)鏈表必須根據(jù)next指針找到下一個(gè)元素
- 從內(nèi)存存儲(chǔ)來(lái)看
(靜態(tài))數(shù)組從棧中分配空間, 對(duì)于程序員方便快速,但是自由度小
鏈表從堆中分配空間, 自由度大但是申請(qǐng)管理比較麻煩
從上面的比較可以看出朝群,如果需要快速訪問(wèn)數(shù)據(jù)岸更,很少或不插入和刪除元
素膊升,就應(yīng)該用數(shù)組;相反廓译, 如果需要經(jīng)常插入和刪除元素就需要用鏈表
數(shù)據(jù)結(jié)構(gòu)了非区。
15、線程與進(jìn)程的區(qū)別和聯(lián)系?
進(jìn)程和線程都是由操作系統(tǒng)所體會(huì)的程序運(yùn)行的基本單元久橙,系統(tǒng)利用該基本單元實(shí)現(xiàn)系統(tǒng)對(duì)應(yīng)用的并發(fā)性歹垫。
進(jìn)程和線程的主要差別在于它們是不同的操作系統(tǒng)資源管理方式排惨。
進(jìn)程有獨(dú)立的地址空間,一個(gè)進(jìn)程崩潰后鹿驼,在保護(hù)模式下不會(huì)對(duì)其它進(jìn)程產(chǎn)生影響辕宏,而線程只是一個(gè)進(jìn)程
中的不同執(zhí)行路徑。
線程有自己的堆棧和局部變量凄鼻,但線程之間沒(méi)有單獨(dú)的地址空間,一個(gè)線程死掉就等于整個(gè)進(jìn)程死掉闰非,所以
多進(jìn)程的程序要比多線程的程序健壯峭范,但在進(jìn)程切換時(shí)纱控,耗費(fèi)資源較大,效率要差一些舶掖。但對(duì)于一些要求同
時(shí)進(jìn)行并且又要共享某些變量的并發(fā)操作唾那,只能用線程闹获,不能用進(jìn)程河哑。
16、目標(biāo)-動(dòng)作機(jī)制
答:目標(biāo)是動(dòng)作消息的接收者沙庐。一個(gè)控件佳吞,或者更為常見的是它的單元底扳,
以插座變量的形式保有其動(dòng)作消息的目標(biāo)。
動(dòng)作是控件發(fā)送給目標(biāo)的消息鹊汛,或者從目標(biāo)的角度看阱冶,它是目標(biāo)為了響應(yīng)
動(dòng)作而實(shí)現(xiàn)的方法木蹬。程序需要某些機(jī)制來(lái)進(jìn)行事件和指令的翻譯。這個(gè)機(jī)
制就是目標(biāo)-動(dòng)作機(jī)制尘颓。
17、 cocoa touch框架
這些框架包括:
Core Animation
通過(guò)Core Animation饺汹,您就可以通過(guò)一個(gè)基于組合獨(dú)立圖層的簡(jiǎn)單的編程模型來(lái)創(chuàng)建豐富的用戶體驗(yàn)兜辞。
Core Audio
Core Audio是播放夸溶,處理和錄制音頻的專業(yè)技術(shù)缝裁,能夠輕松為您的應(yīng)用程序添加強(qiáng)大的音頻功能。
Core Data提供了一個(gè)面向?qū)ο蟮臄?shù)據(jù)管理解決方案韩脑,它易于使用和理解粹污,甚至可處理任何應(yīng)用或大或小的數(shù)據(jù)模型壮吩。
功能列表:框架分類
下面是 Cocoa Touch 中一小部分可用的框架:
音頻和視頻
CoreAudio
OpenAL
MediaLibrary
AVFoundation
數(shù)據(jù)管理
Core Data
SQLite
圖形和動(dòng)畫
CoreAnimation
OpenGL ES
Quartz 2D
網(wǎng)絡(luò)
Bonjour
WebKit
BSDSockets
用戶應(yīng)用
AddressBook
CoreLocation
MapKit
StoreKit
18、自動(dòng)釋放池是什么,如何工作觉啊?
當(dāng)您向一個(gè)對(duì)象發(fā)送一個(gè)autorelease消息時(shí)杠人,Cocoa就會(huì)將該對(duì)象的
一個(gè)引用放入到最新的自動(dòng)釋放池缀程。它仍然是個(gè)正當(dāng)?shù)膶?duì)象,因此自動(dòng)釋
放池定義的作用域內(nèi)的其它對(duì)象可以向它發(fā)送消息滤奈。當(dāng)程序執(zhí)行到作用域
結(jié)束的位置時(shí)蜒程,自動(dòng)釋放池就會(huì)被釋放,池中的所有對(duì)象也就被釋放忌锯。
1)ojc-c 是通過(guò)一種"referring counting"(引用計(jì)數(shù))的方式來(lái)管理內(nèi)存的,
對(duì)象在開始分配內(nèi)存(alloc)的時(shí)候引用計(jì)數(shù)為一,以后每當(dāng)碰到有
copy,retain的時(shí)候引用計(jì)數(shù)都會(huì)加一, 每當(dāng)碰到release和autorelease的時(shí)
候引用計(jì)數(shù)就會(huì)減一,如果此對(duì)象的計(jì)數(shù)變?yōu)榱?, 就會(huì)被系統(tǒng)銷毀.
2) NSAutoreleasePool就是用來(lái)做引用計(jì)數(shù)的管理工作的,這個(gè)東西一般
不用你管的.
3)autorelease和release沒(méi)什么區(qū)別,只是引用計(jì)數(shù)減一的時(shí)機(jī)不同而
已,autorelease會(huì)在對(duì)象的使用真正結(jié)束的時(shí)候才做引用計(jì)數(shù)減一偶垮。
19帝洪、動(dòng)態(tài)綁定
在運(yùn)行時(shí)確定要調(diào)用的方法
動(dòng)態(tài)綁定將調(diào)用方法的確定也推遲到運(yùn)行時(shí)葱峡。在編譯時(shí),方法的調(diào)用并不和代碼綁定在一起蛛芥,只有在消實(shí)發(fā)送
出來(lái)之后军援,才確定被調(diào)用的代碼胸哥。通過(guò)動(dòng)態(tài)類型和動(dòng)態(tài)綁定技術(shù),您的代碼每次執(zhí)行都可以得到不同的結(jié)果。
運(yùn)行時(shí)因子負(fù)責(zé)確定消息的接收者和被調(diào)用的方法蝇庭。運(yùn)行時(shí)的消息分發(fā)機(jī)制為動(dòng)態(tài)綁定提供支持捡硅。當(dāng)您向一
個(gè)動(dòng)態(tài)類型確定了的對(duì)象發(fā)送消息時(shí)壮韭,運(yùn)行環(huán)境系統(tǒng)會(huì)通過(guò)接收者的isa指針定位對(duì)象的類,并以此為起點(diǎn)
確定被調(diào)用的方法琳拨,方法和消息是動(dòng)態(tài)綁定的屯曹。而且,您不必在Objective-C 代碼中做任何工作颜启,就
可以自動(dòng)獲取動(dòng)態(tài)綁定的好處浪讳。您在每次發(fā)送消息時(shí),特別是當(dāng)消息的接收者是動(dòng)態(tài)類型已經(jīng)確定的對(duì)象時(shí)口猜,
動(dòng)態(tài)綁定就會(huì)例行而透明地發(fā)生暮的。
20淌实、TCP長(zhǎng)連接與短連接的區(qū)別
21拆祈、如何解決低內(nèi)存問(wèn)題?
暫時(shí)將沒(méi)有顯示window界面銷毀咙咽,以獲得足夠的內(nèi)存钧敞。
22麸粮、POST請(qǐng)求的數(shù)據(jù)類型有哪些弄诲?
json、xml寂玲、二進(jìn)制梗摇、參數(shù)拼接留美;
23伸刃、請(qǐng)簡(jiǎn)述你理解的面向?qū)ο笏枷?/p>
A先生需要一臺(tái)電腦捧颅,但是A先生對(duì)電腦配置较雕、性能亮蒋、品牌等方方面面的知識(shí)一竅不通。而A先生恰巧有
位經(jīng)營(yíng)電腦方面生意的朋友——C先生贮尖,C先生對(duì)電腦硬件方面很是了解湿硝。A先生告訴C先生所需要的電腦
大概什么需求润努、什么價(jià)位铺浇。C先生就會(huì)提供給A先生其所需的電腦。至于中間篩選丁稀、購(gòu)買倚聚、討價(jià)還價(jià)的
過(guò)程什么的秉沼,A先生完全不用管任何一個(gè)環(huán)節(jié)唬复。只需要付費(fèi)全肮,就能拿到所需的電腦辜腺。
24乍恐、iOS中frame和bounds的區(qū)別茵烈?
frame指的是:該view在父view坐標(biāo)系統(tǒng)中的位置和大小砌些。(參照點(diǎn)是父親的坐標(biāo)系統(tǒng))
bounds指的是:該view在本身坐標(biāo)系統(tǒng)中的位置和大小存璃。(參照點(diǎn)是本身坐標(biāo)系統(tǒng))
25纵东、請(qǐng)簡(jiǎn)述你理解的內(nèi)存管理
如果你通過(guò)分配和初始化(比如[[XXXClass alloc] init])的方式來(lái)創(chuàng)建對(duì)象,你就擁有這個(gè)對(duì)象洒扎,
需要負(fù)責(zé)該對(duì)象的釋放逊笆。這個(gè)規(guī)則在使用NSObject的便利方法new時(shí)岂傲,也同樣適用镊掖。
如果你拷貝一個(gè)對(duì)象,
你也擁有拷貝得到的對(duì)象症虑,需要負(fù)責(zé)該對(duì)象的釋放谍憔。
如果你保持一個(gè)對(duì)象主籍,
你就部分擁有這個(gè)對(duì)象千元,需要在以后都不再使用的時(shí)候釋放該對(duì)象。
如果你從其他對(duì)象那里接
收到一個(gè)對(duì)象祟身,則你不擁有該對(duì)象袜硫,也不應(yīng)該釋放它。
26溢谤、如何設(shè)計(jì)一個(gè)緩存類世杀?
在程序中使用緩存可以極大的提高程序的運(yùn)行速度,設(shè)計(jì)一個(gè)簡(jiǎn)單的緩存類并不需要太復(fù)雜的邏輯.
簡(jiǎn)單的只需要3個(gè)接口.
1.存對(duì)象
2.取對(duì)象
3.刪除對(duì)象
讀取對(duì)象
-讀取對(duì)象的時(shí)候先讀內(nèi)存
-內(nèi)存沒(méi)有就讀文件
保存對(duì)象
-保存對(duì)象的時(shí)候前臺(tái)保存到內(nèi)存里
-后臺(tái)存入到文件里
-內(nèi)存空間不足就需要先釋放一塊內(nèi)存
-收到內(nèi)存不足的消息的時(shí)候刪除釋放所有的內(nèi)存
27瞻坝、什么是懶加載杏瞻?
懶加載就是懶漢模式捞挥,只有用到的時(shí)候才回去初始化砌函。也可以理解為延時(shí)加載。
舉個(gè)最簡(jiǎn)單的例子:tableView中圖片的加載顯示垦沉。
一個(gè)延時(shí)加載厕倍,避免內(nèi)存過(guò)高贩疙;一個(gè)異步加載这溅,避免線程阻塞芍躏。```
28降狠、如何進(jìn)行網(wǎng)絡(luò)消息推送?APNS推送(蘋果推送服務(wù))的實(shí)現(xiàn)過(guò)程否纬?APSN和第三方相比有何區(qū)別临燃?
>首先應(yīng)用發(fā)送通知膜廊,系統(tǒng)彈出提示框詢問(wèn)用戶是否允許,當(dāng)用戶允許后向蘋果服務(wù)器(APNS)請(qǐng)求deviceToken蹬跃,并由蘋果服務(wù)器發(fā)送給自己的應(yīng)用蝶缀,自己的應(yīng)用將DeviceToken發(fā)送給自己的服務(wù)器翁都,自己的服務(wù)器想要發(fā)送網(wǎng)絡(luò)推送時(shí)將deviceToken以及想要推送的信息發(fā)送給蘋果服務(wù)器谅猾,蘋果服務(wù)器將信息發(fā)送給應(yīng)用赊瞬。
推送信息內(nèi)容薯蝎,總?cè)萘坎怀^(guò)256個(gè)字節(jié)占锯;
iOSSDK本身提供的APNS服務(wù)器推送消略,它可以直接推送給目標(biāo)用戶并根據(jù)您的方式彈出提示瞎抛。
**優(yōu)點(diǎn):不論應(yīng)用是否開啟,都會(huì)發(fā)送到手機(jī)端晓殊;**
缺點(diǎn):消息推送機(jī)制是蘋果服務(wù)器端控制巫俺,個(gè)別時(shí)候可能會(huì)有延遲肿男,因?yàn)樘O果服務(wù)器也有隊(duì)列來(lái)處理所有的消息請(qǐng)求舶沛;
>第三方推送機(jī)制冠王,普遍使用Socket機(jī)制來(lái)實(shí)現(xiàn),幾乎可以達(dá)到及時(shí)的發(fā)送到目標(biāo)用戶手機(jī)端豪娜,適用于即時(shí)通訊類應(yīng)用瘤载。
>優(yōu)點(diǎn):實(shí)時(shí)的卖擅,取決于心跳包的節(jié)奏惩阶;
>缺點(diǎn):iOS系統(tǒng)的限制断楷,應(yīng)用不能長(zhǎng)時(shí)間的后臺(tái)運(yùn)行冬筒,所以應(yīng)用關(guān)閉的情況下這種推送機(jī)制不可用。