iOS隨筆

*Property屬性

1)atomic
    原子性,只有一個(gè)線程訪問實(shí)例婆跑,線程安全(當(dāng)前讀取器),開銷大庭呜,耗資源滑进。
2)natomic
    非原子性,線程不安全募谎,可以被多個(gè)線程訪問扶关,效率高
3)assign(int, float) & weak & unsafe_unretained
    a.修飾效果相同数冬,不會(huì)改變引用計(jì)數(shù)节槐,也不會(huì)改變舊數(shù)據(jù)的引用計(jì)數(shù)
    b. assign:一般只修飾值類型,雖然可以修飾引用類型吉执,但修飾對象釋放后疯淫,指針不會(huì)置空,此時(shí)向?qū)ο蟀l(fā)消息會(huì)奔潰
    c. weak不會(huì)產(chǎn)生野指針的問題戳玫,修飾的對象被釋放后熙掺,引用計(jì)數(shù)為0,指針置空咕宿,向?qū)ο蟀l(fā)消息不會(huì)奔潰币绩,weak是安全的。
    d. ansafe_unretained只修飾對象
4)strong & retain & copy
    a. 三者用于修飾引用類型
    b. strong用于ARC府阀,retain用于MRC
            只要最后一個(gè)strong型指針不再指向?qū)ο罄铝停敲磳ο缶蜁?huì)被釋放,即使還有weak型指針指向它试浙。一旦最后一個(gè)strong型指針離去 董瞻,這個(gè)對象將被釋放,所有剩余的weak型指針都將被清除。
    c. copy分為深復(fù)制和淺復(fù)制钠糊。NSString挟秤,NSArray等不可變?yōu)闇\復(fù)制,引用計(jì)數(shù)會(huì)+1抄伍,不會(huì)創(chuàng)建新的內(nèi)存艘刚。
        拷貝條件
            iOS中并非所有的對象都支持copy和mutableCopy,只有遵循了NSCopy協(xié)議或者NSMutableCoy協(xié)議的類才行截珍。如果遵循著兩個(gè)協(xié)議就必須分別實(shí)現(xiàn)copyWithZone和mutableCopyZone方法

*沙盒

1)Documents:保存運(yùn)用運(yùn)行時(shí)生成的持久化數(shù)據(jù)桶良,如游戲進(jìn)度束铭,繪圖等信息养匈,會(huì)被ITunes同步備份芍秆。
2)Library/Caches:保存運(yùn)用運(yùn)行時(shí)生成的持久化數(shù)據(jù),ITunes不會(huì)同步備份沈堡,一般存儲(chǔ)體積大静陈,不需要備份等非重要數(shù)據(jù),如緩存的圖片诞丽,離線數(shù)據(jù)等鲸拥。
3)tmp,保存運(yùn)用等臨時(shí)數(shù)據(jù)僧免,內(nèi)存不足及不運(yùn)行時(shí)會(huì)被清除刑赶,不會(huì)備份

內(nèi)存區(qū)域劃分

1)棧區(qū),由系統(tǒng)自動(dòng)分配和釋放懂衩,存放局部變量撞叨,容量小,速度快浊洞,有序牵敷。
2)堆,由程序員自己分配法希,不釋放會(huì)出現(xiàn)內(nèi)存泄漏枷餐,程序會(huì)回收內(nèi)存,容量大苫亦,速度慢毛肋,無序。
3)靜態(tài)存儲(chǔ)區(qū)屋剑,存放全局變量和靜態(tài)變量润匙,程序結(jié)束時(shí),系統(tǒng)回收唉匾。
4)常量區(qū)孕讳,存放常量,程序結(jié)束時(shí),系統(tǒng)回收厂财。
5)代碼區(qū)油啤,存放二進(jìn)制代碼。

Block為什么要用copy修飾

1)block創(chuàng)建時(shí)默認(rèn)分配的內(nèi)存是在棧棧上的蟀苛,而不是在堆上,其本身的作用領(lǐng)域?qū)儆趧?chuàng)建時(shí)候的作用域逮诲,一旦在作用域之外的內(nèi)存調(diào)用就會(huì)導(dǎo)致程序奔潰帜平,所以使用copy拷貝到堆上。
2)block創(chuàng)建在棧上梅鹦,而block中的代碼可能會(huì)用到本地的代碼裆甩,只有將其拷貝到堆上,才能使用這些變量齐唆。

Block為什么不用retain修飾

retain修飾時(shí)增加引用計(jì)數(shù)器嗤栓,block是存在棧上,可能隨時(shí)會(huì)被系統(tǒng)回收

進(jìn)入Block中的對象的引用計(jì)數(shù)器為什么會(huì)自動(dòng)+1

block執(zhí)行的是回調(diào)箍邮,因此block并不知道其中的對象創(chuàng)建后會(huì)在什么時(shí)候釋放茉帅,為了不在block使用之前對象就已經(jīng)被釋放,所以block就增加一次使用對象的引用計(jì)數(shù)器

Block對于基本數(shù)據(jù)類型锭弊,會(huì)當(dāng)作常量處理

int num1 = 10;
void (^block)() = ^{
    NSlog(@"%d",num1); //
    }
num1 = 20;
block();//輸出10

//如果要修改進(jìn)入block中的變量堪澎,則需加__block關(guān)鍵字
__block int num1 = 10;
void (^block)() = ^{
    NSlog(@"%d",num1); //
    }
num1 = 20;
block();//輸出20

block中self的循環(huán)引用

block執(zhí)行copy之后,block中使用self味滞,此對象會(huì)被retain一次(注意:在堆區(qū)才起retain作用)樱蛤,會(huì)造成循環(huán)引用。
解決方式
    在MRC下剑鞍,用__block修飾
    在ARC下昨凡,用unsafe_unretained 或者weak修飾

循環(huán)引用出現(xiàn)的幾種情況

1)NSTimer
        NSTimer對象timer作為對象A的屬性,本意在A的dealloc中釋放timer蚁署,但timer沒有停止就不會(huì)觸發(fā)dealloc便脊,然后就互相等待,造成循環(huán)引用形用。
        解決辦法:顯示調(diào)用timer的關(guān)閉方法[timer invaluale]就轧,再釋放A對象
2)block塊沒有配合weak使用
3)delegate時(shí)用assign(MRC)或weak(ARC)
4)檢查循環(huán)引用
        Xcode -> Product -> Pofile -> Leaks

OC中的反射機(jī)制

1)class反射,通過類名字符串實(shí)例化對象
        Class class = NSClassFromString(@“Student”);
        Student *student = [[class alloc] init];
2)類名轉(zhuǎn)化為字符串
        Class class = [student class];
        NSString *calssName = NSStringFromClass(class)田度;
3)SEL的反射
        SEL selector = =NSSelectorFromClass(@“setName”)妒御;
        [stu performSelector:selector withObject:nil];
4)通過方法字符串形式實(shí)例化方法
        NSStringFromSelector(@selector *( “setName:”));

理解一個(gè)對象被創(chuàng)建需要的三個(gè)步驟

    開辟內(nèi)存空間,初始化參數(shù)镇饺,返回內(nèi)存地址值

layoutSubView何時(shí)調(diào)用

1)初始化方法時(shí)不會(huì)調(diào)用
2)滾動(dòng)UIScrollview觸發(fā)
3)旋轉(zhuǎn)屏幕時(shí)觸發(fā)
4)改變View的值時(shí)候觸發(fā)乎莉,前提是frame改變了
5)改變UIView的大小時(shí)觸發(fā)

理解OC是動(dòng)態(tài)運(yùn)行時(shí)語言

OC將數(shù)據(jù),對象類型的確定從編譯推遲到運(yùn)行時(shí)。面向?qū)ο笳Z言的多態(tài)性
1)運(yùn)行時(shí)機(jī)制是我們知道運(yùn)行的時(shí)候才確定一個(gè)對象的類型惋啃,以及調(diào)用該類別對象的指定方法哼鬓。
2)多態(tài),不同的對象以自己的方式來響應(yīng)相同的東西边灭,子類的指針可以賦值給父類

Http的狀態(tài)碼

1)302是請求重定向异希。
2)500及以上是服務(wù)器錯(cuò)誤,如503表示服務(wù)器找不到绒瘦、3840表示服務(wù)器返回?zé)o效JSON称簿。
3)400及以上是請求鏈接錯(cuò)誤或者找不到服務(wù)器,如常見的404惰帽。
4)200及以上是正確憨降,如常見的是200表示請求正常。

區(qū)分類別與擴(kuò)展

1)category 為已知的類增加新的方法该酗,類別中擴(kuò)展的方法會(huì)被子類繼承
2)增加原有類的方法授药,而且是可以增加多個(gè)類別將大的功能劃分為小功能
3)類目中的方法會(huì)比原有類中的方法具有更高優(yōu)先級。所以不能和原有類方法重名否則覆蓋
4)擴(kuò)展:即延展呜魄,一般是在一個(gè)類的實(shí)現(xiàn)文件中悔叽。給當(dāng)前類添加私有變量和私有方法。添加的方法是必須實(shí)現(xiàn)的耕赘。

區(qū)分#include骄蝇、#import和@class

1)#include,導(dǎo)入C/C++文件操骡,include相當(dāng)于拷貝文件中的聲明內(nèi)容九火,多次使用就會(huì)報(bào)重復(fù)定義的錯(cuò)誤。
2)#import册招,不會(huì)產(chǎn)生重復(fù)定義的錯(cuò)誤岔激,因?yàn)樗鼤?huì)做一次判斷,如果已經(jīng)導(dǎo)入就不再導(dǎo)入了
3)@class僅僅是類的聲明是掰,告訴編譯器有這么個(gè)類虑鼎,具體這個(gè)類怎么定義一無所知,在編譯的時(shí)候键痛,速度更快炫彩,解決引用循環(huán)依賴死鎖的問題(類的擴(kuò)展,代理設(shè)計(jì)模式)

區(qū)分TCP和UDP

1)TCP:面向連接絮短、傳輸可靠(保證數(shù)據(jù)正確性江兢,保證數(shù)據(jù)順序傳輸)、用于傳輸大量數(shù)據(jù)(流模式)丁频、速度慢杉允,建立連接需要開銷較多邑贴。
2)UDP:面向非連接、傳輸不可靠叔磷、用于傳輸少量數(shù)據(jù)(數(shù)據(jù)包模式)拢驾、速度快,傳輸?shù)氖菆?bào)文改基。

區(qū)分HTTP與Socket

1)HTTP請求:客戶端主動(dòng)發(fā)起請求繁疤,服務(wù)器才能給予響應(yīng),一次請求完畢后則斷開連接秕狰,節(jié)省資源嵌洼。
2)Socket:客戶端與服務(wù)器端直接使用socket套接字連接,雙方保持連接通道封恰,都可以主動(dòng)發(fā)送數(shù)據(jù),適合游戲或股票等這種即時(shí)性很強(qiáng)的要求褐啡。主要使用的類是CFSockdetRef诺舔。

區(qū)分KVC和KVO

1)KVC:值編碼,一種使用字符串標(biāo)識屬性备畦,間接訪問對象屬性的方法低飒。而不是調(diào)用存取方法。
2)KVO:觀察者模式懂盐。通過監(jiān)聽對象的屬性來更新UI或者狀態(tài)褥赊。

區(qū)分define定義的宏和const定義的常量

1)define定義宏的指令,程序在預(yù)處理階段將用#define所定義的內(nèi)容只是進(jìn)行了替換莉恼。程序運(yùn)行時(shí)拌喉,常量表中并沒有用#define所定義的宏,系統(tǒng)并不為它分配內(nèi)存俐银,不會(huì)檢查類型尿背。
2)const定義的常量,在程序運(yùn)行時(shí)是存放在常量表中捶惜,系統(tǒng)會(huì)為它分配內(nèi)存田藐,而且在編譯時(shí)會(huì)進(jìn)行類型檢查。

區(qū)分id與instancetype

1)id:萬能指針吱七,指向任意類型
2)instancetype:只能作為方法的范圍類型汽久,并且返回的類型是當(dāng)前定義類的類型。

區(qū)分通知和代理

1)同:都用于對象之間的通信
2)異:代理是一對一通信踊餐。通知可以一對一景醇,也可以一對多

區(qū)分methord和selector

selector只是一個(gè)方法名,而method包含了方法名和方法實(shí)現(xiàn)市袖。

區(qū)分isKindOfClass 與isMemberOfClass

1)isKindOfClass:確定一個(gè)對象是否是一個(gè)類的成員,或者是派生自該類的成員.
2)isMemberOfClass:確定一個(gè)對象是否是當(dāng)前類的成員.
3)注:isMemberOfClass不能檢測任何的類都是基于NSObject類這一事實(shí)啡直,而isKindOfClass可以烁涌。

區(qū)別面向過程和面向?qū)ο?/h3>
1)面向過程:以事件為編程中心,各功能的實(shí)現(xiàn)是按照事件的先后順序或者因果關(guān)系來展開的編程的一種思想
2)面向?qū)ο螅阂詫ο鬄榫幊痰闹行木泼伲允录轵?qū)動(dòng)撮执,各功能是模塊化的,彼此之間獨(dú)立互不影響的一種編程思想舷丹。

內(nèi)存優(yōu)化的方案

1)首選使用ARC環(huán)境開發(fā)抒钱,但是也要注意防止循環(huán)引用的產(chǎn)生,避免內(nèi)存泄漏
2)懶加載颜凯,延遲創(chuàng)建對象谋币,需要的時(shí)候才創(chuàng)建節(jié)省內(nèi)存消耗
3)復(fù)用,單元格的服用症概,避免過多的創(chuàng)建對象
4)選擇正確的是數(shù)據(jù)結(jié)構(gòu)蕾额,不必要的時(shí)候不使用可變?nèi)萜?5)單例模式
6)及時(shí)刪除緩存信息
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市彼城,隨后出現(xiàn)的幾起案子诅蝶,更是在濱河造成了極大的恐慌,老刑警劉巖募壕,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件调炬,死亡現(xiàn)場離奇詭異,居然都是意外死亡舱馅,警方通過查閱死者的電腦和手機(jī)缰泡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來代嗤,“玉大人棘钞,你說我怎么就攤上這事「梢悖” “怎么了武翎?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長溶锭。 經(jīng)常有香客問我宝恶,道長,這世上最難降的妖魔是什么趴捅? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任垫毙,我火速辦了婚禮,結(jié)果婚禮上拱绑,老公的妹妹穿的比我還像新娘综芥。我一直安慰自己,他們只是感情好猎拨,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布膀藐。 她就那樣靜靜地躺著屠阻,像睡著了一般。 火紅的嫁衣襯著肌膚如雪额各。 梳的紋絲不亂的頭發(fā)上国觉,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天,我揣著相機(jī)與錄音虾啦,去河邊找鬼麻诀。 笑死,一個(gè)胖子當(dāng)著我的面吹牛傲醉,可吹牛的內(nèi)容都是我干的蝇闭。 我是一名探鬼主播,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼硬毕,長吁一口氣:“原來是場噩夢啊……” “哼呻引!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起吐咳,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤苞七,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后挪丢,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡卢厂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年乾蓬,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片慎恒。...
    茶點(diǎn)故事閱讀 39,703評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡任内,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出融柬,到底是詐尸還是另有隱情死嗦,我是刑警寧澤,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布粒氧,位于F島的核電站越除,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏外盯。R本人自食惡果不足惜摘盆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望饱苟。 院中可真熱鬧孩擂,春花似錦、人聲如沸箱熬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蚤认,卻和暖如春米苹,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背烙懦。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工驱入, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人氯析。 一個(gè)月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓亏较,卻偏偏與公主長得像,于是被迫代替她去往敵國和親掩缓。 傳聞我的和親對象是個(gè)殘疾皇子雪情,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評論 2 353

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