ios中foundatio的理解

2021-06-29 14:37:18 字數 2131 閱讀 4838

1 kvo 內部實現原理

a kvo 是基於runtime 機制實現的

b 當某個類的物件第一次被觀察時 系統就會在執行期動態的建立該類的乙個派生類 當這個派生類中重寫基類中任何被觀察的setterf

setter方法 實現真正的通知機制 person ---》nskvonotifying_person)

2 是否可以把比較耗時的操作放在nsnotifaction中

如果在非同步執行緒fade通知 那麼可以執行比較耗時的操作

如果在主線程發的通知 那麼就不可以執行比較耗時的操作

3 foundation 物件和corefoundation 物件有什麼區別

1 foundation 物件時oc 的 corefoundation 物件是c物件

2 資料型別之間的轉換 

arc arc __bridge _retain __bridge _transfer

非arc __bridge

4 不用中間變數 用兩種方法 交換a 和b 的值

a  = a+b

b = a-b

a = a-b

或者a = a^ b 

b = a^b

a = a ^b

5 簡單描述下對單例模式設計的理解

節省記憶體資源 乙個應用就乙個物件

6 什麼是動態  舉例說明

在程式執行過程中才執行的操作

7 runtime 實現的機制是怎麼用的 一般用於 幹嘛 你還記得你需哦使用的相關的標頭檔案 或者某些方法的名稱嗎

執行時機制 runtime 庫裡面包含了根類成員變數 方法相關的api 比如獲取類裡面的所有成員變數 動態改變類的實現方法

為類動態新增 新的方法等 需要匯入 《objc/message.h》

1> runtime 執行時機制 他是一套c語言程式庫

2  實際上我們編寫的所有的oc** 最終都成了runtime 庫的東西 比如類轉成了runtime庫裡面的結構體資料型別

方法轉成了runtime 庫裡面的c語言程式 平時掉方法 轉成了 objc_message send 函式 

3 因此 可以說runtime 是oc的底層事項 是oc的幕後執行者

4 有了runtime 庫 能做什麼事情呢 runtime 庫裡面包含了 根類成員變數方法 方法相關的api 比如獲取類裡面的所有成員變數 

動態改變類的方法實現 為類動態新增新的方法

5 因此 有了runtime 想怎麼該就怎麼改

8.是否使用

core text

或者core image

等?如果使用過,請談談你使用

coretext

或者core image

的體驗。

coretext          

•   隨意修改文字的樣式

•   **混排(純c語言)

•   國外:niumb

core image(濾鏡處理)

* 能調節的各種屬性(對比度, 色溫, 色差等) 9

.nsnotification

和kvo

的區別和用法是什麼?什麼時候應該使用通知,什麼時候應該使用

kvo,它們的實現上有什麼區別嗎?如果用

protocol

和delegate

(或者delegate

的array

)來實現類似的功能可能嗎?如果可能,會有什麼潛在的問題?如果不能,為什麼?(雖然

protocol

和delegate

這種東西面試已經麵爛了…)

通知比較靈活(1個通知能被多個物件接收, 1個物件能接收多個通知),

**比較規範,但是**多(預設是1對1)

kvo效能不好(底層會動態產生新的類),只能監聽某個物件屬性的改變, 不推薦使用(1個物件的屬效能被多個物件監聽,  1個物件能監聽多個物件的其他屬性)

更詳細參考:

block

內部的實現原理

objective-c是對c語言的擴充套件,block的實現是基於指標和函式指標

11.

有兩個陣列

a,b,大小都為

n,陣列元素的值任意,無序;

要求:通過交換

a,b中的元素,使陣列

a元素的和與陣列

b元素的和之間的差最小

pytorch中contiguous 的理解

功能 將tensor的記憶體變為連續的。有些tensor並不是占用一整塊記憶體,而是由不同的資料塊組成,而tensor的view 操作依賴於記憶體是整塊的,這時只需要執行contiguous 這個函式,把tensor變成在記憶體中連續分布的形式。注 在pytorch的最新版本0.4版本中,增加了to...

angular中transclude的理解

今天被這個transclude搞糊塗了,弄了半天,才知道原來使用起來很簡單。很煩惱為社麼書中的對於這個的介紹這麼晦澀難懂。直到看到了這篇文章,才讓我弄清楚了。一 transclude介紹 transclude是angular中自定義指令中的乙個引數。中文就是嵌入的意思。也就是說通過這個引數設定,可以...

對bibernate中inverse的理解

首先明確一點,inverse 控制反轉 屬性設定的意義只存在一對多,多對多這些含有集合的對應關係中 雙向關聯 就拿dept,emp例子來說吧!dept物件中有emp物件的引用 setemps emp物件中有dept物件的引用 也就是雙向關聯 按照資料建表的三大正規化,為了減少冗餘資料,emp表中必定...