2021-07-27

1.option 的底層實現(xiàn)

蘋果公司用option來包括一切耙考,任何語言都會因為數(shù)據(jù)的匹配讀取為空或者不匹配而產(chǎn)生一系列的問題倦始,很顯然鞋邑,蘋果公司有想利用option來彌補這種漏洞的野心。

option真正是什么枚碗,如果他包裹了一個數(shù)據(jù),那么他如果其實真正是什么他就不會去關心铸本,而是很完整的告訴下一個執(zhí)行,哦归敬,我給你的是一個option的類型,具體的話汪茧,你自己想要知道椅亚,就自己去看。

網(wǎng)上已經(jīng)有很多option的講解舱污,option其實是一個結(jié)構(gòu)體,一個有nil媚赖,set組成的結(jié)構(gòu)體珠插,如果沒有值的時候磨隘,就會給nil,如果有值,就會把值附載在set上设预,傳給需要調(diào)用的數(shù)據(jù)。

解包 (!) 是一個很有意思的想法犁河,如果有了option來包裹鳖枕,做真正安全的數(shù)據(jù)類型,為什么還要解包呼股,因為要用里面的值耕魄,但是注意必須要有值可用才可以

很簡單的來說,swift創(chuàng)造了一種不會出錯的安全數(shù)據(jù)類型來承接很多我們未知的數(shù)據(jù)彭谁,這樣可以避免一些數(shù)據(jù)問題吸奴。也統(tǒng)一處理了數(shù)據(jù)上的差異。

  1. category 為什么不可以添加屬性

在類中使用@property缠局,系統(tǒng)會自動生成帶“_”的成員變量和該變量的setter和getter方法则奥。也就是說,屬性相當于一個成員變量加getter和setter方法

在分類里使用@property聲明屬性狭园,只是將該屬性添加到該類的屬性列表读处,但是沒有生成相應的成員變量,也沒有實現(xiàn)setter和getter方法唱矛。

category 它是在運行期決議的罚舱。 因為在運行期即編譯完成后井辜,對象的內(nèi)存布局已經(jīng)確定,如果添加實例變量就會破壞類的內(nèi)部布局管闷,這對編譯型語言來說是災難性的粥脚。

Runtime技術中的關聯(lián)對象可以為類別添加屬性。

  1. timer 在滑動視圖的時候為什么會停止

RunLoop只能運行在一種mode下包个,如果要換mode刷允,當前的loop也需要停下重啟成新的。

利用這個機制碧囊,ScrollView滾動過程中NSDefaultRunLoopMode(kCFRunLoopDefaultMode)的mode會切換到UITrackingRunLoopMode來保證ScrollView的流暢滑動树灶;只有在NSDefaultRunLoopMode模式下處理的事件會影響scrllView的滑動。

如果我們把一個NSTimer對象以NSDefaultRunLoopMode(kCFRunLoopDefaultMode)添加到主運行循環(huán)中的時候, ScrollView滾動過程中會因為mode的切換糯而,而導致NSTimer將不再被調(diào)度天通。

但是因為mode還是可定制的,所以:Timer計時會被scrollView的滑動影響的問題可以通過將timer添加到NSRunLoopCommonModes(kCFRunLoopCommonModes)來解決

  1. 協(xié)議

http://www.reibang.com/p/bc644d1fd35b

(1)協(xié)議就是用來規(guī)范雙方行為的

(2)swift語言中的協(xié)議作用是用來統(tǒng)一屬性熄驼、方法土砂、下標的

(3)協(xié)議自身是不實現(xiàn)自身的內(nèi)容 由遵守協(xié)議的類、結(jié)構(gòu)體谜洽、枚舉來實現(xiàn)

(1)萝映、協(xié)議用來規(guī)范接口(方法)、屬性阐虚、下標

(2)序臂、協(xié)議能夠間接實現(xiàn)多繼承

(1)使用協(xié)議指定屬性

可以定義存儲屬性、類型屬性, 必須注明屬性的權(quán)限(get set)但是協(xié)議中定義的屬性無論是存儲屬性還是計算屬性 ,協(xié)議都是不做區(qū)分的实束。

(2)使用協(xié)議指定行為

//[結(jié)論]一個協(xié)議可以由多個類遵守 一個類可以遵守多個協(xié)議 遵守多個協(xié)議的行為就是間接實現(xiàn)多繼承

//遵守協(xié)議的類奥秆、結(jié)構(gòu)體、枚舉 必須實現(xiàn)協(xié)議中的方法

(3)協(xié)議中可以指定下標

(4)協(xié)議中指定構(gòu)造方法

//[注意]當類遵守協(xié)議 實現(xiàn)協(xié)議中的構(gòu)造方法 那么方法前面必須使用required修飾

(5)使用協(xié)議類型定義變量咸灿、函數(shù)的形參构订、函數(shù)的返回值類型

(6)規(guī)范方法/接口(協(xié)議的作用)

閉包 逃逸閉包

屬于非逃逸閉包,因為閉包就在函數(shù)體內(nèi)執(zhí)行了 在函數(shù)體結(jié)束前被調(diào)用,閉包是非逃逸型的閉包避矢。

逃逸閉包的定義:

   當閉包作為?個實際參數(shù)傳遞給?個函數(shù)的時候悼瘾,并且是在函數(shù)返回之后調(diào)?,我們就說這個閉包逃逸了审胸。當我們聲明?個接受閉包作為形式參數(shù)的函數(shù)時亥宿,你可以在形式參數(shù)前寫 @escaping

   來明確閉包是允許逃逸的。

這種不知道什么原因雖然傳入了閉包,但并未使用,而是走了一圈又到了全局變量那,這種就是逃逸閉包,需要用escaping聲明

比如延時或者同步等等會導致 閉包的值有問題也許不能執(zhí)行,所以加了關鍵字,讓編譯器做對應的處理

閉包做為函數(shù)的參數(shù)傳遞時砂沛,在函數(shù)體結(jié)束后被調(diào)用烫扼,我們就說這個閉包逃離了這個函數(shù)體的作用域,這個閉包是逃逸型的閉包碍庵,使用@escaping來標注映企。

逃逸閉包也不能捕獲inout

weak 為什么會置為nil

weak assgin 的區(qū)別

推送 推送的具體實現(xiàn)

參數(shù)加密 為了防止別人抓包 使用過哪些加密悟狱;iOS 如何防止抓包

1、抓包原理

為了防止被抓包那么就要了解抓包的原理堰氓。

其實原理很是簡單:一般抓包都是通過代理服務來冒充你的服務器芽淡,客戶端真正交互的是這個假冒的代理服務,這個假冒的服務再和我們真正的服務交互豆赏,這個代理就是一個中間者 ,我們所有的數(shù)據(jù)都會通過這個中間者富稻,所以我們的數(shù)據(jù)就會被抓取掷邦。HTTPS 也同樣會被這個中間者偽造的證書來獲取我們加密的數(shù)據(jù)。

2椭赋、防止抓包

為了數(shù)據(jù)的更安全抚岗,那么我們?nèi)绾蝸矸乐贡蛔グ?/p>

第一種思路是:如果我們能判斷是否有代理,有代理那么就存在風險哪怔。

一宣蔚、發(fā)起請求之前判斷是否存在代理,存在代理就直接返回认境,請求失敗胚委。

二、我們可以在請求配置中清空代理叉信,讓請求不走代理

我們通過hook到sessionWithConfiguration: 方法亩冬。然后清空代理

第二種思路:針對HTTPS 請求。我們判斷證書的合法性硼身。

主要是針對HTTPS 請求硅急,對證書的一個驗證。

密碼用MD5

https://blog.csdn.net/qq_30513483/article/details/60143441

UIStackView distribute 和alignment 怎么使用

http://www.reibang.com/p/c889d2c075bf

https://www.oschina.net/translate/building-dynamic-layouts-for-ios-with-uistackview?print

使用Masonry 設置約束的優(yōu)先級 有什么用

http://www.reibang.com/p/c52275544488

//設置最小寬度

mas_greaterThanOrEqualTo

// 設置抗壓縮優(yōu)先級 優(yōu)先級高顯示完全

UILayoutPriorityDefaultHigh UILayoutConstraintAxisHorizontal

[rightLbl setContentCompressionResistancePriority:UILayoutPriorityDefaultLow forAxis:UILayoutConstraintAxisHorizontal];

怎么字典轉(zhuǎn)模型

那么Swift 也可以使用 Mirror 來獲取 Model 里面的 key - value 哦~

let mirr = Mirror(reflecting: self)

//Mirror 的 children 是一個 (label: String?, value: Any) 元組類型佳遂,表示該類的所有屬性的名字和類型

網(wǎng)絡

nsoperitaion 的使用

信號量 柵欄

下載6張圖后在同一刷新

并發(fā)3個任務 任務的執(zhí)行順序怎么樣的

weak 會置為nil的底層實現(xiàn)

swift使用oc的時候怎么使用 使用橋接

1营袜、當我們在swift項目中新建一個oc類的時候,xcode會提示我們要不要同時創(chuàng)建橋接文件丑罪,我們點創(chuàng)建荚板,xcode會幫我們自動創(chuàng)建一個橋接文件

文件名格式默認為:{targetName}-Bridging-Header.h。targetName為當前項目的target的名稱吩屹。

2啸驯、在橋接文件中#importOC需要暴露給Swift的內(nèi)容,這樣在swift文件中就可以訪問了祟峦。

OC想調(diào)用swift的時候怎么調(diào)用

1罚斗、在swift的代碼要能被oc調(diào)用,其定義的類要繼承自NSObject宅楞,函數(shù)要用@objc定義

或者在類的開頭用 @objcMembers 修飾针姿,這樣類的所有屬性和方法都能被oc訪問

2袱吆、xcode已經(jīng)默認生成一個用于OC調(diào)用Swift的頭文件,文件名格式是:{targetName}-Swift.h距淫,targetName為當前項目的target的名稱绞绒。

為啥被oc訪問的swift的類要繼承自NSObject?因為在oc中的類是依賴runtime機制的榕暇,而runtime機制需要isa指針蓬衡,只有繼承NSObject才能獲得isa指針。

struct和class的區(qū)別

什么是值類型 什么是應用類型

class和struct的區(qū)別:1彤枢、class是引用類型狰晚,struct是值類型;2缴啡、class可以繼承類壁晒、接口和被繼承,struct只能繼承接口业栅,不能被繼承秒咐;3、class有默認的無參構(gòu)造函數(shù)碘裕,有析構(gòu)函數(shù)携取,struct沒有默認的無參構(gòu)造函數(shù),且只能聲明有參的構(gòu)造函數(shù)帮孔,沒有析構(gòu)函數(shù)歹茶;4、class可以使用abstract和sealed你弦,有protected修飾符惊豺,struct不可以用abstract和sealed,沒有protected修飾符禽作;5尸昧、class必須使用new初始化,結(jié)構(gòu)可以不用new初始化旷偿;6烹俗、class實例由垃圾回收機制來保證內(nèi)存的回收處理,而struct變量使用完后立即自動解除內(nèi)存分配萍程;7幢妄、從職能觀點來看,class表現(xiàn)為行為茫负,而struct常用于存儲數(shù)據(jù)蕉鸳;8、作為參數(shù)傳遞時,class變量以按址方式傳遞潮尝,而struct變量是以按值方式傳遞的榕吼。

swift enum和oc enum有什么區(qū)別

OC

1.oc的枚舉值相當于這個文件中的一個局部變量,只能是整型

2.不同枚舉中,枚舉名稱不可以一樣勉失,在同一文件

swift

3.枚舉里可以寫方法

4.枚舉的rawValue可以是Float(float也是賦值的后面依次+1)或是String羹蚣,或是沒有

5.可以用Rank(rawValue: 3)方法創(chuàng)建一個枚舉實例

6.枚舉實例可以帶參數(shù)

怎么根據(jù)cell的內(nèi)容自動計算cell的高度

mvc 和mvvm的區(qū)別

https://www.php.cn/faq/417740.html

他們之間的區(qū)別主要是MVC中Controller演變成了MVVM中的viewModel。MVVM主要解決了MVC中大量的DOM操作帶來的問題乱凿。MVVM中當和Model頻繁發(fā)生變化顽素,開發(fā)者需要主動更新到View。

http://www.reibang.com/p/67ed133cee4f

uiview 和calayer的區(qū)別

optional swift里面為什么要引用這個類型

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末徒蟆,一起剝皮案震驚了整個濱河市胁出,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌后专,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,029評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件输莺,死亡現(xiàn)場離奇詭異戚哎,居然都是意外死亡,警方通過查閱死者的電腦和手機嫂用,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,395評論 3 385
  • 文/潘曉璐 我一進店門型凳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人嘱函,你說我怎么就攤上這事甘畅。” “怎么了往弓?”我有些...
    開封第一講書人閱讀 157,570評論 0 348
  • 文/不壞的土叔 我叫張陵疏唾,是天一觀的道長。 經(jīng)常有香客問我函似,道長槐脏,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,535評論 1 284
  • 正文 為了忘掉前任撇寞,我火速辦了婚禮顿天,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蔑担。我一直安慰自己牌废,他們只是感情好,可當我...
    茶點故事閱讀 65,650評論 6 386
  • 文/花漫 我一把揭開白布啤握。 她就那樣靜靜地躺著鸟缕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪排抬。 梳的紋絲不亂的頭發(fā)上叁扫,一...
    開封第一講書人閱讀 49,850評論 1 290
  • 那天三妈,我揣著相機與錄音,去河邊找鬼莫绣。 笑死畴蒲,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的对室。 我是一名探鬼主播模燥,決...
    沈念sama閱讀 39,006評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼掩宜!你這毒婦竟也來了蔫骂?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,747評論 0 268
  • 序言:老撾萬榮一對情侶失蹤牺汤,失蹤者是張志新(化名)和其女友劉穎辽旋,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體檐迟,經(jīng)...
    沈念sama閱讀 44,207評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡补胚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,536評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了追迟。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片溶其。...
    茶點故事閱讀 38,683評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖敦间,靈堂內(nèi)的尸體忽然破棺而出瓶逃,到底是詐尸還是另有隱情,我是刑警寧澤廓块,帶...
    沈念sama閱讀 34,342評論 4 330
  • 正文 年R本政府宣布厢绝,位于F島的核電站,受9級特大地震影響带猴,放射性物質(zhì)發(fā)生泄漏代芜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,964評論 3 315
  • 文/蒙蒙 一浓利、第九天 我趴在偏房一處隱蔽的房頂上張望挤庇。 院中可真熱鬧,春花似錦贷掖、人聲如沸嫡秕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,772評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽昆咽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間掷酗,已是汗流浹背调违。 一陣腳步聲響...
    開封第一講書人閱讀 32,004評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留泻轰,地道東北人技肩。 一個月前我還...
    沈念sama閱讀 46,401評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像浮声,于是被迫代替她去往敵國和親虚婿。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,566評論 2 349

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