Q 為什么不推薦使用繼承?A 繼承是面向?qū)ο蟮乃拇筇匦灾? 用來表示類之間的 is-a 關(guān)系, 可以解決代碼復(fù)用的問題. 雖然繼承有諸多作用, 但繼承層次過深, 過復(fù)雜, ...
基于接口而非實現(xiàn)編程這條原則的另一個表述方式是"基于抽象而非實現(xiàn)編程". 后者表述的方式其實更能體現(xiàn)這條原則的設(shè)計初衷, 我們做軟件開發(fā)的時候一定要有抽象意識, 封裝意識, ...
Q 抽象類和接口的語法特性?抽象類不允許被實例化, 只能被繼承, 他可以包含屬性(實例變量)和方法. 方法既可以包含代碼實現(xiàn)也可以不包含代碼實現(xiàn). 不包含代碼實現(xiàn)的方法叫做抽...
三種違反面向?qū)ο箫L(fēng)格的典型代碼設(shè)計 濫用setter, getter方法在設(shè)計實現(xiàn)類的時候, 除非真的需要,否則盡量不要給屬性定義setter方法,除此之外, 盡管gette...
Q 什么是封裝?A 封裝也在做信息隱藏或者數(shù)據(jù)保護,類通過暴露有限的訪問接口,授權(quán)外部進行通過類提供的方式來訪問內(nèi)部信息或者數(shù)據(jù). 他需要編程語言提供的權(quán)限訪問控制語法來支持...
Q 為什么要學(xué)習(xí)設(shè)計模式?A 應(yīng)對面試中的設(shè)計模式相關(guān)問題 防止被別人吐槽代碼寫的爛 提高復(fù)雜代碼的設(shè)計和開發(fā)能力(為了讓別人看不懂) 讀源碼,學(xué)框架 事半功倍(為了看懂 人...
Xcode 11 默認吧 project的 bitcode 設(shè)置為了yes, 所以 不光需要查看 targets的 還需要看一下 project的
Xcode Failed to verify bitcode in PLPlayerKit.framework今天在用Xcode打包時,碰到這種報錯: 解決方法:可能是庫的版本問題,可以試著鏈接低版本的庫。 比如PLPlayerKit.framework,只有3.3.3及其以下版本都...
/Users/kian/.rvm/gems/ruby-2.3.3/gems/cocoapods-1.5.3/lib/cocoapods/command.rb:118:in g...
Q: int *p 怎么理解?A:p是一個變量名, int * 標(biāo)識p變量只能存儲int類型變量的地址 什么是指針? 指針是C語言的靈魂 定義 Q: 地址是什么?A: 地址是...
沒有runloop 就意味著app一運行就會退出(換句話說,runloop保護著app不會被退出) NSRunLoop - Foundation 框架 CFRunLoop -...
第五步,我覺得YY的圖沒有寫錯,那個dispatch 確實是一個source1(這是個名字),
而你表達的卻是 這個第五步 有沒有需要處理的事件(這是內(nèi)容)
關(guān)于runloop,好多人都理解錯了!跟多數(shù)開發(fā)者一樣,我也曾經(jīng)迷惑于runloop,最初只了解可以通過runloop一些監(jiān)聽事件的通知來做一些事情,優(yōu)化性能。關(guān)于runloop源碼的基礎(chǔ)知識,本文不做論述,可以...
目錄 UIWindow,UIView,CALayer的區(qū)別事件傳遞和響應(yīng)機制UIView block動畫實現(xiàn)原理 一 UIWindow,UIView,CALayer的區(qū)別 1...
這份面試題來自朋友的大廠的Interview以及我個人的答題 請寫出下面代碼執(zhí)行順序以及每次執(zhí)行前等待了多長時間?并解釋下原因? 答:等待1秒輸出2,等待兩秒輸出1,再輸出3...