1.什么是函數(shù)式編程蛹屿?
將業(yè)務(wù)邏輯細(xì)化屁奏,抽象,封裝成一個(gè)個(gè)對(duì)象错负,并借助語(yǔ)言坟瓢,庫(kù),組件犹撒,框架等折联,將整個(gè)業(yè)務(wù)流程轉(zhuǎn)化為對(duì)象之間的相互調(diào)用,這就是面向?qū)ο缶幊淌都铡ttps://www.cnblogs.com/chulung/p/5651185.html
2.abi是什么诚镰?
應(yīng)用程序二進(jìn)制接口(application binary interface,ABI) 描述了應(yīng)用程序和操作系統(tǒng)之間祥款,一個(gè)應(yīng)用和它的庫(kù)之間清笨,或者應(yīng)用的組成部分之間的低接口 。ABI不同于API 刃跛,API定義了源代碼和庫(kù)之間的接口抠艾,因此同樣的代碼可以在支持這個(gè)API的任何系統(tǒng)中編譯 桨昙,然而ABI允許編譯好的目標(biāo)代碼在使用兼容ABI的系統(tǒng)中無(wú)需改動(dòng)就能運(yùn)行检号。 ABI掩蓋了各種細(xì)節(jié)首懈,例如:調(diào)用約定控制著函數(shù)的參數(shù)如何傳送以及如何接受返回值;系統(tǒng)調(diào)用的編碼和一個(gè)應(yīng)用如何向操作系統(tǒng)進(jìn)行系統(tǒng)調(diào)用谨敛;以及在一個(gè)完整的操作系統(tǒng)ABI中,對(duì)象文件的二進(jìn)制格式滤否、程序庫(kù)等等脸狸。一個(gè)完整的ABI,像 Intel二進(jìn)制兼容標(biāo)準(zhǔn) (iBCS) 藐俺,允許支持它的操作系統(tǒng)上的程序不經(jīng)修改在其他支持此ABI的操作體統(tǒng)上運(yùn)行炊甲。其他的 ABI 標(biāo)準(zhǔn)化細(xì)節(jié)包括C++ name decoration和同一個(gè)平臺(tái)上的編譯器之間的調(diào)用約定,但是不包括跨平臺(tái)的兼容性欲芹。在Unix的操作系統(tǒng)中卿啡,存在很多運(yùn)行在同一件平臺(tái)上互相相關(guān)但是不兼容的操作系統(tǒng)(尤其是80386兼容系統(tǒng))。有一些努力嘗試標(biāo)準(zhǔn)化A I菱父,以減少銷售商將程序移植到其他系統(tǒng)時(shí)所需的工作颈娜。然而,直到現(xiàn)在還沒(méi)有很成功的例子浙宜,雖然LBS正在為L(zhǎng)inux做這方面的努力官辽。
3.什么是MVC,請(qǐng)結(jié)合CocoaTouch說(shuō)明?3.2.8 Cocoa和Cocoa Touch中MVC設(shè)計(jì)模式
《iPhone與iPad開(kāi)發(fā)實(shí)戰(zhàn)--iOS經(jīng)典應(yīng)用剖析》第3章工具類應(yīng)用開(kāi)發(fā)實(shí)戰(zhàn)--密碼生成應(yīng)用粟瞬,通過(guò)對(duì)本章的學(xué)習(xí)同仆,讀者可以掌握密碼生成應(yīng)用程序(Amuck Password Generator)的應(yīng)用開(kāi)發(fā)過(guò)程,重點(diǎn)是一些基本控件的設(shè)計(jì)和使用過(guò)程裙品,這些控件包括:UIView俗批、UIButton和UILabel等,學(xué)會(huì)使用Interface Builder市怎,用Interface Builder設(shè)計(jì)這些控件以及它們的屬性岁忘。本節(jié)為大家介紹Cocoa和Cocoa Touch中MVC設(shè)計(jì)模式。
作者:關(guān)東升/趙志榮/賈云龍來(lái)源:機(jī)械工業(yè)出版社|2012-05-23 13:40 收藏? 分享
有獎(jiǎng)?wù){(diào)研 | 人臉識(shí)別功能在互聯(lián)網(wǎng)行業(yè)認(rèn)知度情況
3.2.8? Cocoa和Cocoa Touch中MVC設(shè)計(jì)模式
從上面的介紹中可以看出焰轻,應(yīng)用中有很多的UIViewController和UIView臭觉,以及很多nib文件,它們之間是什么關(guān)系呢辱志?這與MVC設(shè)計(jì)模式有關(guān)蝠筑。
蘋果的Cocoa和Cocoa Touch是采用MVC設(shè)計(jì)模式進(jìn)行設(shè)計(jì)的,所謂設(shè)計(jì)模式就是解決某一特定問(wèn)題的方案揩懒。MVC是解決具有UI的應(yīng)用系統(tǒng)的成熟解決方案什乙,MVC解釋如下:
M-Model(模型)是應(yīng)用系統(tǒng)中與視圖對(duì)應(yīng)部分的數(shù)據(jù);
V-View(視圖)是應(yīng)用系統(tǒng)中用戶看到并與之交互的界面;
C-Controller(控制器)在應(yīng)用系統(tǒng)中起到控制器作用,用來(lái)接受用戶事件已球、顯示數(shù)據(jù)臣镣、與視圖進(jìn)行交互等辅愿。
Cocoa是蘋果開(kāi)發(fā)Mac OS X應(yīng)用系統(tǒng)的框架,基于Objective-C忆某,它包括:Foundation和AppKit点待,Cocoa框架在iOS上叫做Cocoa Touch,Cocoa Touch框架包含:Foundation和UIKit弃舒。
在Cocoa和Cocoa Touch應(yīng)用中嚴(yán)格按照該模式實(shí)現(xiàn)(見(jiàn)圖3-9)癞埠。在Cocoa和Cocoa Touch中,除了視圖和視圖控制器外聋呢,還有nib文件苗踪。nib文件是通過(guò)Interface Builder工具維護(hù),在新版的Xcode 4.x中削锰, Interface Builder與Xcode集成在一起通铲。本書(shū)采用的還是Xcode3.2版本,因此Interface Builder與Xcode工具還是分開(kāi)的器贩。
4.swift相對(duì)于OC有哪些優(yōu)點(diǎn)
1颅夺、Swift容易閱讀,語(yǔ)法和文件結(jié)構(gòu)簡(jiǎn)易化蛹稍。
2碗啄、Swift更易于維護(hù),文件分離后結(jié)構(gòu)更清晰稳摄。
3稚字、Swift更加安全,它是類型安全的語(yǔ)言厦酬。
4胆描、Swift代碼更少,簡(jiǎn)潔的語(yǔ)法仗阅,可以省去大量冗余代碼
5昌讲、Swift速度更快,運(yùn)算性能更高减噪。
5.什么是泛型,swift在哪些地方使用了泛型短绸?
泛型代碼可以讓你寫出根據(jù)自我需求定義、適用于任何類型的筹裕,靈活且可重用的函數(shù)和類型醋闭。它的可以讓你避免重復(fù)的代碼,用一種清晰和抽象的方式來(lái)表達(dá)代碼的意圖
例如朝卒,Swift 的數(shù)組和字典類型都是泛型集证逻。你可以創(chuàng)建一個(gè)Int數(shù)組,也可創(chuàng)建一個(gè)String數(shù)組抗斤,或者甚至于可以是任何其他 Swift 的類型數(shù)據(jù)數(shù)組囚企。同樣的丈咐,你也可以創(chuàng)建存儲(chǔ)任何指定類型的字典(dictionary),而且這些類型可以是沒(méi)有限制的龙宏。
6.defer棵逊、guard的作用?
defer新語(yǔ)法聲明银酗。defer譯為延緩歹河、推遲之意。比如花吟,讀取某目錄下的文件內(nèi)容并處理數(shù)據(jù),你需要首先定位到文件目錄厨姚,打開(kāi)文件夾衅澈,讀取文件內(nèi)容以及處理數(shù)據(jù),關(guān)閉文件以及文件夾谬墙。倘若一切順利今布,只需按照設(shè)定好的程序流程走一輪即可;不過(guò)考慮事情要面面俱到拭抬,倘若中間某個(gè)環(huán)節(jié)失敗部默,比如讀取文件內(nèi)容失敗、處理數(shù)據(jù)失敗等等造虎,還需要進(jìn)行一些后續(xù)收尾工作傅蹂,即關(guān)閉文件或關(guān)閉文件夾(當(dāng)然就算順利執(zhí)行,也是要關(guān)閉的)算凿。
guard充當(dāng)了警衛(wèi)員一職份蝴,保證條件滿足情況下,才會(huì)讓你通過(guò)氓轰,否則只能else讓你返回了婚夫!切記else中一定需要有返回的語(yǔ)句,比如return署鸡、continue案糙、break、throw這種提早退出的關(guān)鍵字Qデ臁时捌!
7.swift語(yǔ)法糖?炉抒!的本質(zhì)(實(shí)現(xiàn)原理)
理解就是讓你的代碼更加有簡(jiǎn)潔匣椰,別人閱讀代碼的時(shí)候會(huì)覺(jué)得你的代碼很工整,也方便維護(hù)
8.舉例swift中模式匹配的作用端礼?
enum Trades {
? ? case Buy(stock: String, amount: Int, stockPrice: Float)
? ? case Sell(stock: String, amount: Int, stockPrice: Float)
}
/**
- 參數(shù) stock: 股票的名字
- 參數(shù) amount: 金額, 負(fù)數(shù)表示銷售額, 正數(shù)表示購(gòu)買額
*/
func process(stock: String, _ amount: Int) {
? ? print ("\(amount) of \(stock)")
}
let aTrade = Trades.Buy(stock: "APPL", amount: 200, stockPrice: 115.5)
switch aTrade {
case .Buy(let stock, let amount, _):
? ? process(stock, amount)
case .Sell(let stock, let amount, _):
? ? process(stock, amount * -1)
}
// 輸出 "buy 200 of APPL"