面試技術(shù)點(diǎn)概要

CCache原理
https傳輸過(guò)程相關(guān)和https是否需要二次加密
ARC模式下需要注意的內(nèi)存管理
TCP/IP的三次握手
http&https工作原理
NSArray&NSMutbleArray
iOS多線程:GCD:在我們實(shí)際開(kāi)發(fā)的過(guò)程中,經(jīng)常會(huì)遇到多任務(wù)處理的情況稚矿,我們期望任務(wù)的處理順序按開(kāi)發(fā)者的意愿來(lái)進(jìn)行千绪,而不是刻板的按照某一種方法或原則称杨,由此绰上,調(diào)度任務(wù)時(shí)間順序的需求應(yīng)運(yùn)而生癣诱,我們管這個(gè)需求的解決方案叫多線程城瞎。
iOS界面渲染機(jī)制
離屏渲染+UI優(yōu)化

  • 1 各種圓角陰影渲染避免用drawrect(CPU)拳魁、cornerRadius等 用CAShapeLayer(GPU)UIBezierPath(GPU)來(lái)替代。
  • 2 利用runloop來(lái)實(shí)現(xiàn)在scrollview滑動(dòng)的時(shí)候不加載圖片狐血,從而優(yōu)化滑動(dòng)幀數(shù)。
  • 3 使用異步進(jìn)行layer渲染(Facebook開(kāi)源的異步繪制框架AsyncDisplayKit
  • 4 設(shè)置layeropaque值為YESGPU不用考慮多色圖層層疊混色的問(wèn)題)易核,減少?gòu)?fù)雜圖層合成盡量使用不包含透明(alpha)通道的圖片資源(opaque =YES: GPU將不會(huì)做任何的計(jì)算合成匈织,不需要考慮它下方的任何東西(因?yàn)槎急凰趽踝×?,而是簡(jiǎn)單從這個(gè)層拷貝牡直。這節(jié)省了GPU相當(dāng)大的工作量缀匕。由此看來(lái),opaque屬性的真實(shí)用處是給繪圖系統(tǒng)提供一個(gè)性能優(yōu)化開(kāi)關(guān)碰逸!,)
  • 5 盡量設(shè)置layer的大小值為整形值
  • 6 直接讓美工把圖片切成圓角進(jìn)行顯示乡小,這是效率最高的一種方案
  • 7 很多情況下用戶(hù)上傳圖片進(jìn)行顯示,可以讓服務(wù)端處理圓角
  • 8 使用代碼手動(dòng)生成圓角Image設(shè)置到要顯示的View上饵史,利用UIBezierPathCoreGraphics框架)畫(huà)出來(lái)圓角圖片
  • 9 適當(dāng)?shù)臅r(shí)候使用shouldRasterize開(kāi)啟光柵化满钟、當(dāng)一個(gè)圖像混合了多個(gè)圖層,每次移動(dòng)時(shí)胳喷,每一幀都要重新合成這些圖層湃番,十分消耗性能。當(dāng)我們開(kāi)啟光柵化后吭露,會(huì)在首次產(chǎn)生一個(gè)位圖緩存吠撮,當(dāng)再次使用時(shí)候就會(huì)復(fù)用這個(gè)緩存。

iOS isa指針以及消息傳遞過(guò)程&class的結(jié)構(gòu)
instruments
敏捷開(kāi)發(fā)
組件化開(kāi)發(fā):所謂的組件化讲竿,通俗理解就是將一個(gè)工程分成各個(gè)模塊泥兰,各個(gè)模塊之間相互解耦,可以獨(dú)立開(kāi)發(fā)并編譯成一個(gè)獨(dú)立的 APP 進(jìn)行調(diào)試题禀,然后又可以將各個(gè)模塊組合起來(lái)整體構(gòu)成一個(gè)完整的 APP鞋诗。它的好處是當(dāng)工程比較大的時(shí)候,便于各個(gè)開(kāi)發(fā)者之間分工協(xié)作投剥、同步開(kāi)發(fā)师脂;被分割出來(lái)的模塊又可以在項(xiàng)目之間共享,從而達(dá)到復(fù)用的目的。組件化有諸多好處吃警,尤其適用于比較大型的項(xiàng)目糕篇。

runtime
runloop

  • RunLoop和線程的一一對(duì)應(yīng)的,對(duì)應(yīng)的方式是以key-value的方式保存在一個(gè)全局字典中
  • Runloop的創(chuàng)建過(guò)程:[NSRunLoop currentRunLoop]-->CFRunLoopGetCurrent-->_CFRunLoopGet0(在這個(gè)方法里面先是去全局字典里面去找線程(key)對(duì)應(yīng)的runloop對(duì)象酌心,若果有就取出返回拌消,如果沒(méi)有就創(chuàng)建一個(gè)runloop對(duì)象并以線程為key存到全局字典里面)。
  • 主線程的RunLoop會(huì)在初始化全局字典時(shí)創(chuàng)建
  • 子線程的RunLoop會(huì)在第一次獲取的時(shí)候創(chuàng)建安券,如果不獲取的話就一直不會(huì)被創(chuàng)建
  • RunLoop會(huì)在線程銷(xiāo)毀時(shí)銷(xiāo)毀
  • RunLoop 啟動(dòng)前內(nèi)部必須要有至少一個(gè) Timer/Observer/Source墩崩,所以在 [runLoop run] 之前先創(chuàng)建了一個(gè)新的 NSMachPort 添加進(jìn)去了。通常情況下侯勉,調(diào)用者需要持有這個(gè) NSMachPort (mach_port) 并在外部線程通過(guò)這個(gè) port 發(fā)送消息到 RunLoop 內(nèi)鹦筹;但此處添加 port 只是為了讓 RunLoop 不至于退出,并沒(méi)有用于實(shí)際的發(fā)送消息址貌。
  • CoreFoundation源碼(包括runloop)

動(dòng)態(tài)語(yǔ)言铐拐、靜態(tài)語(yǔ)言和編譯型語(yǔ)言、解釋型語(yǔ)言
block原理block本質(zhì)是一個(gè) 結(jié)構(gòu)體(C++)(runtime里面练对,對(duì)象和類(lèi)都是用結(jié)構(gòu)體表示):

- (void)test
{
    int a;
    ^{a;};
}

等于:

struct __Person__test_block_impl_0 {//block本質(zhì)結(jié)構(gòu)體
  struct __block_impl impl;//block主要變量
  struct __Person__test_block_desc_0* Desc;//這個(gè)存儲(chǔ)著block的大小
  int a;
  // block 構(gòu)造函數(shù)block定義的時(shí)候調(diào)用  a(_a)是構(gòu)造函數(shù)的參數(shù)列表初始化形式遍蟋,相當(dāng)于a = _a。從_I_Person_test看螟凭,傳入的就是a  這里進(jìn)行變量捕獲
  __Person__test_block_impl_0(void *fp, struct __Person__test_block_desc_0 *desc, int _a, int flags=0) : a(_a) {
    impl.isa = &_NSConcreteStackBlock;
    impl.Flags = flags;
    impl.FuncPtr = fp;
    Desc = desc;
  }
};
struct __block_impl {//block主要成員屬性
  void *isa;//指向所屬類(lèi)的指針虚青,也就是block的類(lèi)型
  int Flags;//標(biāo)志變量,在實(shí)現(xiàn)block的內(nèi)部操作時(shí)會(huì)用到
  int Reserved;//保留變量
  void *FuncPtr;//block調(diào)用的時(shí)候執(zhí)行的函數(shù)指針 實(shí)際就是 __Person__test_block_func_0 
};
static void __Person__test_block_func_0(struct __Person__test_block_impl_0 *__cself) {//block調(diào)用的時(shí)候執(zhí)行的方法
  int a = __cself->a; // bound by copy 獲取捕獲到的變量
a;}

static struct __Person__test_block_desc_0 {//這個(gè)存儲(chǔ)著block的大小
  size_t reserved;
  size_t Block_size;
} __Person__test_block_desc_0_DATA = { 0, sizeof(struct __Person__test_block_impl_0)};

static void _I_Person_test(Person * self, SEL _cmd) { //test方法
    int a;
    (void (*)())&__Person__test_block_impl_0((void *)__Person__test_block_func_0, &__Person__test_block_desc_0_DATA, a);
}

可以看出螺男,它包含了isa指針(包含isa指針的皆為對(duì)象)棒厘,也就是說(shuō)block也是一個(gè)對(duì)象(runtime里面,對(duì)象和類(lèi)都是用結(jié)構(gòu)體表示)烟号。
變量捕獲:局部自動(dòng)變量捕獲的變量的值绊谭、局部靜態(tài)變量捕獲的是地址(因?yàn)殪o態(tài)變量在運(yùn)行期間不會(huì)被銷(xiāo)毀)、全局變量不捕獲(因?yàn)槿肿兞吭谀睦锒伎梢栽L問(wèn) 汪拥,所以不用捕獲)
block類(lèi)型: 全局block达传、棧區(qū)block、堆區(qū)block

block的三種類(lèi)型

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市盖腕,隨后出現(xiàn)的幾起案子茄菊,更是在濱河造成了極大的恐慌,老刑警劉巖赊堪,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異竖哩,居然都是意外死亡哭廉,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)相叁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)遵绰,“玉大人,你說(shuō)我怎么就攤上這事增淹〈环茫” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵虑润,是天一觀的道長(zhǎng)成玫。 經(jīng)常有香客問(wèn)我,道長(zhǎng)拳喻,這世上最難降的妖魔是什么哭当? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮冗澈,結(jié)果婚禮上钦勘,老公的妹妹穿的比我還像新娘。我一直安慰自己亚亲,他們只是感情好彻采,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布腐缤。 她就那樣靜靜地躺著,像睡著了一般肛响。 火紅的嫁衣襯著肌膚如雪岭粤。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,441評(píng)論 1 310
  • 那天终惑,我揣著相機(jī)與錄音绍在,去河邊找鬼。 笑死雹有,一個(gè)胖子當(dāng)著我的面吹牛偿渡,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播霸奕,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼溜宽,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了质帅?” 一聲冷哼從身側(cè)響起适揉,我...
    開(kāi)封第一講書(shū)人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎煤惩,沒(méi)想到半個(gè)月后嫉嘀,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡魄揉,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年剪侮,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片洛退。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡瓣俯,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出兵怯,到底是詐尸還是另有隱情彩匕,我是刑警寧澤,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布媒区,位于F島的核電站驼仪,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏袜漩。R本人自食惡果不足惜谅畅,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望噪服。 院中可真熱鬧毡泻,春花似錦、人聲如沸粘优。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至丹墨,卻和暖如春廊遍,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背贩挣。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工喉前, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人王财。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓卵迂,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親绒净。 傳聞我的和親對(duì)象是個(gè)殘疾皇子见咒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359

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