`iOS編程實(shí)戰(zhàn)`讀書筆記

iOS編程實(shí)戰(zhàn)讀書筆記

1.弱引用容器

常見的容器有NSArray, NSSetNSDictionary;

NSArrayNSSet會(huì)保留保存在其中的對(duì)象,
NSDictionary不光會(huì)保留值,還要復(fù)制鍵.

從iOS6開始有了新的容器類:NSPointerArray, NSHashTableNSMapTable, 它們統(tǒng)稱為指針容器類, 有時(shí)候配置為使用NSPointerFuntions

  • NSPointerArray 類似于 NSArray
  • NSHashTable 類似于 NSSet
  • NSMapTable 類似于 NSDictionary

這些新容器都可以配置為持有弱引用/非對(duì)象的指針或者其他罕見情形, NSPointerArray還有一個(gè)好處是可以存戶Null值.

2. UIKit和視圖繪圖周期

  • iOS在運(yùn)行循環(huán)中整合所有的繪圖請(qǐng)求, 并一次將他們繪制出來
  • 不能在主線程中進(jìn)行復(fù)雜的處理
  • 不能在主線程之外的主視圖上下文中繪制. 開發(fā)者需要檢查每個(gè)UIKit方法以確保它沒有主線程需求. 只要不是在主線程繪制. 一些UIKit方法是可以在后臺(tái)線程中使用的.

3.視圖繪制與視圖布局

  • 如果一個(gè)視圖調(diào)用了 setNeedsDisplay方法, 他就被標(biāo)記為"需要刷新的", 并且會(huì)在下一次繪圖周期中重新繪制.
  • 如果數(shù)據(jù)改變后只需要進(jìn)行布局更新(而非繪制), 則可以調(diào)用 setNeedsDisplay方法.

4.混用UIKit和Core Graphics

在 drawRect: 方法之外, 你可能會(huì)發(fā)現(xiàn)使用Core Graphics繪制的東西上下顛倒. 這個(gè)是因?yàn)樽鴺?biāo)系不同的原因. UIKit是左上點(diǎn)為原點(diǎn), 而Core Graphics的原點(diǎn)是在左下.

只要使用 drawRect: 方法中的 UIGraphicsGetCurrentContext 返回的上下文, 那么一切都是正常的, 因?yàn)檫@個(gè)上下文是已經(jīng)翻轉(zhuǎn)過的. 不過, 如果使用CGBitmapContextCreate 這樣的函數(shù)創(chuàng)建自己的上下文, 它會(huì)以左下角為原點(diǎn). 可以進(jìn)行反向計(jì)算或者翻轉(zhuǎn)上下文:

  • Core Graphics 轉(zhuǎn) UIKit, 先平移了上下文的高度并使用一個(gè)負(fù)數(shù)比例進(jìn)行反轉(zhuǎn).
    CGContextTranslateCTM(context, 0.0f, height);
    CGContextScaleCTM(context, 1.0f, -1.0f);

  • UIKit 轉(zhuǎn) Core Graphics 先反轉(zhuǎn), 然后平移.
    CGContextScaleCTM(context, 1.0f, -1.0f);
    CGContextTranslateCTM(context, 0.0f, -height);

5.透明(alpha),不透明(opaque)與隱藏(hidden)

看似有關(guān)實(shí)際無關(guān)的屬性

alpha

alpha 屬性決定了視圖會(huì)通過像素顯示多少信息. 1意味著所有的視圖信息都在像素上表現(xiàn)出來, 0意味著沒有視圖信息能在像素上顯示出來.

iPhone上沒有東西是真正透明的. 說到底, 它只是關(guān)于如何繪制像素的問題.

opaque

opaque并不會(huì)實(shí)際升高或降低它的透明度. 繪圖系統(tǒng)會(huì)根據(jù)opaque來優(yōu)化. 如果視圖標(biāo)記為opaque, 便是向繪圖系統(tǒng)'許諾'即將繪制的每一個(gè)像素都要使用全部透明的顏色. 這便允許繪圖系統(tǒng)忽略在下面的視圖, 這樣可以改善性能, 尤其是在進(jìn)行變性時(shí). 但是視圖中有特定的透明區(qū)域, 或者并不繪制矩形所有像素, 設(shè)置opaque會(huì)導(dǎo)致不可預(yù)測(cè)的結(jié)果.設(shè)置一個(gè)非透明的backgroundColor屬性可以確保繪制所有像素.

與opaque緊密相關(guān)的是 clearsContextBeforeDrawing. 它的默認(rèn)值為Yes, 而且會(huì)在調(diào)用 drawRect:之前將上下文設(shè)置為透明黑底. 這會(huì)避免視圖中的任何垃圾數(shù)據(jù). 這種操作非炒缆幔快, 不過如果打算繪制每一個(gè)像素, 將其設(shè)置為 NO 可能會(huì)好些.

hidden

hidden代表視圖并不會(huì)被繪制. 它通常等同于 alpha 為0, 以為hidden屬性不能產(chǎn)生動(dòng)畫效果. 所以通常還是以動(dòng)畫模擬 alpha 到值 0的方法隱藏視圖.

你可以創(chuàng)建一個(gè)透明視圖來接收事件. alpha 為 1 , opaque 為 NO 且 backgroundColor 為nil 或 [UIColor clearColor] 來接收觸摸事件. 如果用于碰撞檢測(cè), 擁有透明背景的視圖仍然被認(rèn)為是可視的.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末盯拱,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子兔沃,更是在濱河造成了極大的恐慌,老刑警劉巖级及,帶你破解...
    沈念sama閱讀 210,978評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件乒疏,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡饮焦,警方通過查閱死者的電腦和手機(jī)怕吴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來县踢,“玉大人转绷,你說我怎么就攤上這事∨鹌。” “怎么了议经?”我有些...
    開封第一講書人閱讀 156,623評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)谴返。 經(jīng)常有香客問我煞肾,道長(zhǎng),這世上最難降的妖魔是什么嗓袱? 我笑而不...
    開封第一講書人閱讀 56,324評(píng)論 1 282
  • 正文 為了忘掉前任籍救,我火速辦了婚禮,結(jié)果婚禮上渠抹,老公的妹妹穿的比我還像新娘蝙昙。我一直安慰自己闪萄,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評(píng)論 5 384
  • 文/花漫 我一把揭開白布耸黑。 她就那樣靜靜地躺著桃煎,像睡著了一般。 火紅的嫁衣襯著肌膚如雪大刊。 梳的紋絲不亂的頭發(fā)上为迈,一...
    開封第一講書人閱讀 49,741評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音缺菌,去河邊找鬼葫辐。 笑死,一個(gè)胖子當(dāng)著我的面吹牛伴郁,可吹牛的內(nèi)容都是我干的耿战。 我是一名探鬼主播,決...
    沈念sama閱讀 38,892評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼焊傅,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼剂陡!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起狐胎,我...
    開封第一講書人閱讀 37,655評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤鸭栖,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后握巢,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體晕鹊,經(jīng)...
    沈念sama閱讀 44,104評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年暴浦,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了溅话。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,569評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡歌焦,死狀恐怖飞几,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情独撇,我是刑警寧澤循狰,帶...
    沈念sama閱讀 34,254評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站券勺,受9級(jí)特大地震影響绪钥,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜关炼,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評(píng)論 3 312
  • 文/蒙蒙 一程腹、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧儒拂,春花似錦寸潦、人聲如沸色鸳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)命雀。三九已至,卻和暖如春斩箫,著一層夾襖步出監(jiān)牢的瞬間吏砂,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評(píng)論 1 264
  • 我被黑心中介騙來泰國(guó)打工乘客, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留狐血,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,260評(píng)論 2 360
  • 正文 我出身青樓易核,卻偏偏與公主長(zhǎng)得像匈织,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子牡直,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評(píng)論 2 348

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