整理一些重點和面試問到幾率比較大的題目給小伙伴
對您有幫助或者您喜歡的話 希望能點個贊或者添加一下關注
一. CALayer和UIView的區別聯系
- 1 UIView是UIKIt的只能在iOS使用, CALayer是QuartzCore的 iOS和mac os通用
- 2 CALayer比UIView更加輕量級,但是可以實現同樣的效果
- 3 UIView的CALayer類似UIView的子View樹形結構
- 4 UIView比CALayer多了一個事件處理功能,也就是說UIView能處理用戶觸摸
- 5 UIView有個重要的屬性layer,可以返回它的主CALayer實例.CALayer *layer = myView.layer
- 6 坐標系統: CALayer的坐標系統比UIView多了一個anchorPoint屬性
- 7 UIView是iOS系統中界面的基本元素,所有的界面元素都是繼承自它.它本身完全是由CoreAnimation來實現的.它真正的繪圖部分,是由一個CALayer類來管理的.UIView本身更像是一個CALayer的管理權,訪問它的跟繪圖和跟坐標有關的屬性,如frame,bounds等,實際上內部都是在訪問它所包含的CALayer的相關屬性.
layer可以設置圓角顯示 cornerRadius 也可以設置陰影 shadowColor 但是如果layer??中某個layer設置了圓角 ??中所有layer的陰影效果將都不顯示.因此要死設置有圓角還要陰影,可以做兩個UIView重疊,一個layer顯示圓角一個layer顯示陰影 - 8 渲染 當更新層 改變不能立即顯示在屏幕上.當所有的層都準備好時,可以調用setNeedsDisplay方法來重繪顯示.
- 9 變換 要在一個層中添加一個3D或仿射變換,可以分別設置層的transform或者affineTransform屬性
- 10 變形Quartz Core的渲染能力 使二維圖像可以被自由的操縱,就像是三維的.圖像可以在一個三維坐標系中以任意的角度被旋轉 縮放 和傾斜.CATransform3D的一套方法提供了一些魔術般的效果
二. 簡述同步和異步
同步:串行的執行任務 異步:并行的執行任務.同步函數不具備開啟線程的能力,而異步函數具備
所謂同步,就是在發出一個調用時,在沒有得到結果之前,該調用就不返回.但是一旦調用返回,就得到返回值了.也就是 由調用者主動等待這個調用結果
而異步則是相反,調用在發出之后,這個調用就直接返回了,所以沒有返回結果.換句話說就是當一個異步過程調用發出后,調用者不會立刻得到結果。而是在調用發出后,被調用者通過狀態、通知來通知調用者,或通過回調函數處理這個調用.
三. 多線程安全怎么控制?
用互斥鎖,隊列組,柵欄函數,依賴
四. 簡要說明什么時候使用繼承,什么時候使用類別
在OC中,一個類繼承另一個類,就是繼承了父類所有的屬性和方法,并且可以擴充自己的屬性:而類別是在不改變原有類的基礎上進行方法擴充;
因此,根據開發需求,如果這個類需要擴充屬性,或者需要重寫系統的類的某些方法,用繼承;如果只是對一個類擴充接口和模塊,使用類別更加方便.
五. 簡述蘋果的安全機制
- 數字簽名機制:在iOS中運行的App必須 擁有自己的數字簽名,而數字簽名來與開發者的數字證書;開發者需要加入"iOS開發者計劃"才能獲取證書 而且其開發的App還要經過嚴格的審查才能在AppStore上架,保證了App的安全;杜絕了第三方和未簽名App的運行;
- 沙盒保護機制:這種機制使得設備內的各個App之間無法直接進行交流,只能通過iOS來進行數據傳遞;雖然降低了系統的擴展性但是卻保證了安全性;
- 不要使用越獄,否則蘋果的安全機制就功虧一簣;
- 只從AppStore獲取App;
- 第一次連接計算機,不要隨意點"信任";
- 不要隨意給某個App設置隱私讀取權限;
六 關鍵字const有什么含意?修飾類呢?static的作用,用于類呢?還有extern c的作用?
當使用 const修飾基數數據類型變量時,該變量就變為常量,進入靜態區
-
當使用const修飾指針類型變量時:
- 當使用const在指針類型兩邊,那么該指針變量指向的內存空間的內容就不能改變了,但指針的指向可以改變.
如果const在變量的左邊,那么該指針的指向不能改變了,而指向內存空間的內容可以改變
當使用const修飾符時,const NSSting *str,相當于修飾該對象,表示對象是不可更改的.
static修飾變量,表示這個內部全局變量,只能在本文件中訪問.系統會將該變量放進靜態區,它的生命周期被延長到了程序結束
static修飾類, 表示這個內部的方法, 只能在本文件中訪問.
extern c表示聲明了一外部變量, 多個外部變量如果同名,實際指向的是同一塊存儲空間.
七. 類工廠方法是什么?
- 類工廠方法的實現是為了向客戶提供方便,它們將分配和初始化合在一個步驟中,返回被創建的對象,并進行自動釋放處理.這些方法的形式是+(type)className..其中className不包括任何前綴. 工廠方法可能不僅僅為了方便使用,它們不但可以將分配和初始化合在一起,還可以為初始化過程提供對象的分配信息.類工廠方法的另一個目的是使類提供單間實例.
八 UIView從出現到銷毀的過程?
-> loadView
-> viewDidLoad
-> viewWillAppear
-> viewWillLayoutSubviews
-> viewDidLayoutSubviews
-> viewDidAppear
-> viewWillDisappear
-> viewDidDisappear
九. 什么情況下回發生內存泄漏和內存溢出?
內存溢出就是你要求分配的內存超出了系統能給你的,系統不能滿足需求,于是就產生溢出.
內存泄漏就是指你向系統申請分配內存進行使用,可以說使用完后沒有驚喜釋放,結果這塊內存也無法分配給其他程序,稱之為內存泄漏
內存泄漏的累計危害非常大 最后會導致內存溢出 程序閃退;
內存泄漏分為四大類;
- 常發生內存泄漏:發生內存泄漏的代碼會被多次執行到,每次被執行的時候都會導致一塊內存泄漏.
- 偶發生內存泄漏.發生內存泄漏的代碼只有在某些特定的壞境或者操作過程下才會發生;
- 一次性內存泄漏.發生內存泄漏的代碼只會被執行一次,或者由于算法上的缺陷,導致總會有一塊僅且一塊內存發生泄漏;
- 隱式內存泄漏 程序在運行的過程中不停的分配內存, 但是直到結束的時候才釋放內存,對于運行周期很長的服務器,不及時釋放會耗盡內存;
十 說說響應者鏈條?
響應者鏈條是一條由UIResponder的子類組成的鏈條,它們都能夠響應時間,由事件的最佳相應者起,如果它是控制器的view的話,它的上一級響應者就是這個控制器,否則就是它的父控件;控制器的上一級響應者是它父控制器的view,最終一直到window.
純手打 有錯誤或者不對的地方希望大家能給指出
喜歡的小伙伴希望能給個贊 或者添加個關注