iOS面試題續(xù)

KVO和KVC:

KVC:

  • KVC是鍵值編碼,是一種間接訪問對象實例變量的機制,只用該機制不需要調(diào)用set或get方法??以及->來訪問成員變量,它通過setValue: forKey 和valueForkey方法來訪問。(可以通過一個字符串的key(屬性名)修改對象的屬性值)

優(yōu)點:
a、主要的好處就是減少代碼量
b、沒有property的變量也能通過KVC來設(shè)置

缺點:
如果key寫錯萝挤,編寫時不會報錯,運行時會報錯

注意:KVC不是設(shè)計模式

KVO:

  • KVO是鍵值監(jiān)聽根欧,是一種能使得對象獲取到其他對象屬性變化的通知機制(可以監(jiān)聽一個對象屬性值的改變)

優(yōu)點:
a怜珍、能夠提供一種簡單的方法實現(xiàn)兩個對象間的同步
b、能夠?qū)Ψ俏覀儎?chuàng)建的對象凤粗,即內(nèi)部對象的狀態(tài)改變做出響應(yīng)酥泛,而不要改變內(nèi)部對象的實現(xiàn)
c、能夠提供觀察的屬性的最新值以及先前值
d、用key paths來觀察屬性柔袁,因此也可以觀察嵌套對象
e呆躲、完成了對觀察對象的抽象,因為不需要二維的代碼來允許觀察值能夠被觀察

缺點:
a捶索、觀察的屬性必須使用strings來定義插掂,隱藏編譯器不會出現(xiàn)警告和檢查
b、對屬性重構(gòu)將導(dǎo)致觀察代碼不再可用
c腥例、復(fù)雜的“if”語句要求對象正在觀察多個值辅甥,這是因為所有的觀察都通過一個方法來指向
d、當釋放觀察者時不需要移除觀察者

KVO和KVC的聯(lián)系:

  • 實現(xiàn)KVO鍵值觀察模式燎竖,被觀察的對象必須使用KVC鍵值編碼來修改它的實例變量璃弄,這樣才是被觀察者觀察到。因此构回,KVC和KVO的基礎(chǔ)或者說KVO實現(xiàn)是建立在KVC的基礎(chǔ)之上的

簡述常見的設(shè)計模式

  • 單例設(shè)計谢揪、代理設(shè)計、KVO 觀察者(通知)捐凭、工廠方法、模板方法 MVC凳鬓、命令模式茁肠、適配模式

MVC設(shè)計模式

MVC是一種架構(gòu)模式,M表示數(shù)據(jù)模型Model缩举,V表示視圖View垦梆,C表示控制器Controller。

1仅孩、Model負責(zé)存儲托猩、定義、操作數(shù)據(jù)辽慕。
2京腥、View用來展示數(shù)據(jù)給用戶,和用戶進行操作交互溅蛉。
3公浪、Controller是Model于View的協(xié)調(diào)者,Controller把Model中的數(shù)據(jù)拿過來給View使用船侧。

Controller可以直接與Model和View進行通信欠气,而View不能和Controller直接通信。View與Controller通信需要利用代理協(xié)議的方法镜撩,當有數(shù)據(jù)的更新時预柒,Model也要與Controller進行通信,這個時候使用notificationhe KVO,這個方式就像一個廣播宜鸯,Model發(fā)射信號憔古,Controller設(shè)置監(jiān)聽器接收信號,當有數(shù)據(jù)要更新時顾翼,就發(fā)信號給Controller投放。Model和View不能直接進行通信,因為這樣就違背了MVC的設(shè)計思想适贸。

工廠

工廠方法模式:定義創(chuàng)建對象的接口灸芳,讓子類決定實例化哪一個類。工廠方法使得一個類的實例化延遲到其子類拜姿。

使用場景:

1烙样、編譯時無法準確預(yù)期要創(chuàng)建的對象的類;
2蕊肥、類想讓子類決定在運行時創(chuàng)建什么谒获;
3、類有若干輔助類為其子類壁却,而你想將返回哪個子類這一信息局部批狱;

代理

代理是一種概念,是用協(xié)議來實現(xiàn)的展东。代理是兩個對象之間通訊的一種方式赔硫,代理主要做反向傳值,實現(xiàn)系統(tǒng)的一些回調(diào)方法盐肃,一般用來1:1的兩個對象通訊上爪膊。

類方法和實例方法的區(qū)別

1、類方法是屬于整個類砸王,而不屬于某個對象推盛。
2、類方法只能訪問類成員變量谦铃,不能訪問實例變量耘成,而實例方法可以訪問類成員變量和實例變量。
3荷辕、類方法的調(diào)用可以通過類名.類方法和對象.類方法凿跳,而實例方法只能通過對象.實例方法訪問。
4疮方、類方法只能訪問類方法控嗜,而實例方法可以訪問類方法和實例方法。
5骡显、類方法不能被覆蓋疆栏,實例方法可以被覆蓋曾掂。

繼承和擴展、類別

-繼承

繼承:一個類(子類)繼承于另一個類(父類)壁顶,那么子類不僅擁有父類所有的屬性和方法珠洗,而且可以創(chuàng)建屬于自己的屬性和方法。ios中不支持多繼承若专,只能單繼承,一個類只能有一個父類

-擴展

1调衰、擴展與類別類似,其實就是相當于匿名的類別
2米酬、擴展可以用于臨時對某個類的接口進行擴展赃额,在類的實現(xiàn)文件中定義跳芳。
3竹勉、可以在類擴展中聲明屬性和實例變量饶米。

-類別

1檬输、為已有的類添加新的方法
2、可以在類別中添加新屬性匈棘,但是不能為類別添加新的實例變量丧慈。

作用:

1、將類的實現(xiàn)分散到多個不同文件或多個不同框架中主卫。
2逃默、創(chuàng)建對私有方法的前向引用
3、向?qū)ο筇砑臃钦絽f(xié)議簇搅。

缺陷:

1完域、無法向類中添加實例變量,類別中沒有空間容納實例變量
2瘩将、存在名稱沖突問題吟税,即類別中實例方法與現(xiàn)有方法重名凹耙,類別具有更高優(yōu)先級肠仪,造成方法覆蓋。

優(yōu)勢:

1意述、可以將類的實現(xiàn)代碼放到不同的文件或框架中,需要的時候引用特定的文件即可吮蛹。
2、可以創(chuàng)建對私有方法的前行引用匹涮。

iOS7天试、iOS8、iOS9的區(qū)別

iOS7:

iOS 7是iOS面世以來在用戶界面上做出改變最大的一個操作系統(tǒng)然低。iOS 7拋棄了以往的擬物化設(shè)計带兜,而采用了扁平化設(shè)計喧兄。蘋果優(yōu)化了 iOS 的工作方式浑彰,并以此為基礎(chǔ)重新設(shè)計了 iOS 的外觀。之所以這樣做诉濒,是因為能夠服務(wù)于體驗的設(shè)計才是出色的設(shè)計及志。
1划纽、控制中心

控制中心為用戶建立快速通路,便于用戶使用那些隨時急需的控制選項和app

2幻捏、增強的通知中心

通知中心可以讓用戶隨時掌握新郵件、未接來電、待辦事項和更多信息沛善。iOS7的通知中心和以往的通知中心不同,它變成了三欄--今天塞祈、全部金刁、未讀通知

3、更加只能的多任務(wù)處理

多任務(wù)處理始終是在App之間切換的捷徑议薪,iOS7會了解用戶喜歡何時使用App尤蛮,并在用戶啟動App之前更新用戶的內(nèi)容。

4斯议、更強大的相機

iOS7的相機功能將你所有的拍攝模式置于顯要位置抵屿,包括照片、視頻捅位、全景模式和新增的Square模式。

5搂抒、智能相冊

iOS7有更快速艇搀、更輕松、更愉悅的方式求晶,讓用戶能根據(jù)時間和地點智能的分組管理用戶的照片和視頻焰雕。

6、AirDrop文件共享

AirDrop能讓用戶通過共享按鈕芳杏,快速矩屁、輕松的共享照片辟宗、視頻、通訊錄吝秕,以及任何App中的一切泊脐。AirDrop會使用無線網(wǎng)絡(luò)和藍牙搞定其余的事情,不需要設(shè)置烁峭,且傳輸經(jīng)過加密容客,可嚴格保障共享內(nèi)容的安全.

7、改進的Safari

iOS7中的Safari令瀏覽更強大约郁、更出色缩挑、更美觀。按鈕和工具欄會隱藏起來鬓梅,因此供置,用戶會在屏幕上看到比以往更多的內(nèi)容。綜合智能搜索欄绽快、全新標簽視圖芥丧、共享的鏈接和閱讀列表讓你的Safari更加強大。

8谎僻、iCloud鑰匙串

iCloud可以為用戶記住用戶的帳戶名稱娄柳、密碼和信用卡號碼。無論用戶何時需要登入網(wǎng)站或在線購買艘绍,Safari都能自動輸入這些信息赤拒。而且 256-bit AES 加密令它極為安全。

9诱鞠、正式版Siri

iOS7中的Siri擁有新外觀挎挖、新聲音和新功能。它的界面經(jīng)過重新設(shè)計航夺,以淡入視圖浮現(xiàn)于任意屏幕畫面的最上層蕉朵。Siri回答問題的速度更快,還能查詢更多信息源阳掐,如維基百科始衅。它可以承擔(dān)更多任務(wù),如回電話缭保、播放語音郵件汛闸、調(diào)節(jié)屏幕亮度,以及更多艺骂。

10诸老、App Store新功能

附近的熱門App是iOS7推出的App Store新功能,能夠顯示與用戶當前位置相關(guān)的一系列熱門App钳恕。iOS7還能讓用戶的App自動保持更新别伏,再不需要用戶費心蹄衷。


iOS8:

1.size classes的推出

size classes的產(chǎn)生對于屏幕的適配提供了便利,沒必要獲取屏幕的尺寸來進行操作了厘肮,將長寬尺寸按照設(shè)備類型和方向歸類為 regular 和 compact兩類愧口,通過為不同的設(shè)備定義尺寸分類,用來定義同類型的操作特性轴脐,美中不足的是只能相對于父控件來適配调卑。

2.Cloud Kit

其作用就是將數(shù)據(jù)原封不動的使用 Cloud Kit 向云端獲取數(shù)據(jù)和存儲數(shù)據(jù).

3.新增 Photos.framework 框架

這個框架的主要作用就是和蘋果自帶的photo應(yīng)用交互,它對于 Assets Library(照片和視頻的選却笤邸)的主要優(yōu)勢在于能夠和iCloud照片交互恬涧。還能監(jiān)視其他應(yīng)用對于照片的改變.
第三方軟件也可以通過 touchID驗證(支付寶)。

4.HeatKit框架的推出

我們綁定健康應(yīng)用后就可以查看很多的健康信息包括步數(shù)碴巾、跑步距離等等.

5.Spotlight

當我們要查找一個聯(lián)系人或者軟件溯捆,Spotlight就可以快鍵方便的查出,還能幫你在互聯(lián)網(wǎng)和維基百科提供匹配的信息.


iOS9:

1厦瓢、Xcode7 免證書真機調(diào)試提揍。
2、UIAlertView過期煮仇,用UIAlertController可以完全替代劳跃,而且效果很好的.
3、URL scheme
當我們要用到分享或者調(diào)到其他平臺授權(quán)的功能時浙垫,在iOS8中可以比較隨意刨仑,但是在iOS9中我們需要將要外部調(diào)用的URL scheme列為白名單,才可以完成跳轉(zhuǎn)
4夹姥、iOS8 自動開啟多點觸控杉武,但是iOS9默認不開啟
在viewDidLoad里面添加:self.view.multipleTouchEnabled = YES
5、iOS9增加了語言后面的地區(qū)代碼辙售, 中國 zh-Hanz–>zh-hanz-CN
6轻抱、Xcode7打包不了老項目,報錯bitcode旦部,解決方法:build setting中關(guān)閉bitcode祈搜,設(shè)置 enable bitcode 為NO
7、IOS9中部分字體可能間距會變大士八,label中顯示不全的問題容燕。

frame和bounds的區(qū)別:

  • frame指的是:該view在父view坐標系統(tǒng)中的位置和大小(參照點是父視圖點坐標系統(tǒng))
  • bounds指的是:該view在本身坐標系統(tǒng)中的位置和大胁芰濉(參照點事本身的坐標系統(tǒng))

frame:

frame: 參考父view的坐標系來設(shè)置自己左上角的位置。
父控件 內(nèi)容的左上角為坐標原點, 計算出的控件自己 矩形框的位置和尺寸捧杉。

bounds:

bounds:設(shè)置bounds可以修改自己坐標系的原點位置陕见,進而影響到其“子view”的顯示位置秘血。bounds的X、 Y的值是可以改變的评甜。改變的其實是控件的內(nèi)容的位置灰粮,所以控件本身的位置是不會變的,但是該控件的子控件位置就會發(fā)生改變忍坷。
控件自己 內(nèi)容的左上角為坐標原點, 計算出的控件自己 矩形框的位置和尺寸粘舟。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市佩研,隨后出現(xiàn)的幾起案子柑肴,更是在濱河造成了極大的恐慌,老刑警劉巖旬薯,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件晰骑,死亡現(xiàn)場離奇詭異,居然都是意外死亡绊序,警方通過查閱死者的電腦和手機硕舆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來骤公,“玉大人抚官,你說我怎么就攤上這事〗桌Γ” “怎么了凌节?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長趁猴。 經(jīng)常有香客問我刊咳,道長,這世上最難降的妖魔是什么儡司? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任娱挨,我火速辦了婚禮,結(jié)果婚禮上捕犬,老公的妹妹穿的比我還像新娘跷坝。我一直安慰自己,他們只是感情好碉碉,可當我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布柴钻。 她就那樣靜靜地躺著,像睡著了一般垢粮。 火紅的嫁衣襯著肌膚如雪贴届。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天,我揣著相機與錄音毫蚓,去河邊找鬼占键。 笑死,一個胖子當著我的面吹牛元潘,可吹牛的內(nèi)容都是我干的畔乙。 我是一名探鬼主播,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼翩概,長吁一口氣:“原來是場噩夢啊……” “哼牲距!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起钥庇,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤牍鞠,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后上沐,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體皮服,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年参咙,在試婚紗的時候發(fā)現(xiàn)自己被綠了龄广。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡蕴侧,死狀恐怖择同,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情净宵,我是刑警寧澤敲才,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站择葡,受9級特大地震影響紧武,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜敏储,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一阻星、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧已添,春花似錦妥箕、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至缆蝉,卻和暖如春宇葱,著一層夾襖步出監(jiān)牢的瞬間瘦真,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工黍瞧, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留吗氏,地道東北人。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓雷逆,卻偏偏與公主長得像,于是被迫代替她去往敵國和親污尉。 傳聞我的和親對象是個殘疾皇子膀哲,可洞房花燭夜當晚...
    茶點故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容

  • *面試心聲:其實這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,140評論 30 470
  • 1.OC里用到集合類是什么? 基本類型為:NSArray被碗,NSSet以及NSDictionary 可變類型為:NS...
    輕皺眉頭淺憂思閱讀 1,378評論 0 3
  • OC的理解與特性 OC作為一門面向?qū)ο蟮恼Z言某宪,自然具有面向?qū)ο蟮恼Z言特性:封裝、繼承锐朴、多態(tài)兴喂。它既具有靜態(tài)語言的特性...
    克魯?shù)吕?/span>閱讀 450評論 0 0
  • 1.Difference between shallow copy and deep copy? 淺復(fù)制和深復(fù)制的...
    用心在飛閱讀 991評論 0 9
  • OC的理解與特性O(shè)C作為一門面向?qū)ο蟮恼Z言,自然具有面向?qū)ο蟮恼Z言特性:封裝焚志、繼承衣迷、多態(tài)。它既具有靜態(tài)語言的特性(...
    LIANMING_LI閱讀 513評論 0 0