1.runloop和線程妨托。
Input Sources輸入源 & Timer Source定時源速那;
輸入源可以是鍵盤鼠標(biāo)蚊俺;定時源是NSTimer事件敢辩。nsidic一一對應(yīng)汉柒,runloop是一種消息循環(huán)機制,每一個線程內(nèi)部都有一個消息循環(huán)
只有主線程消息循環(huán)默認(rèn)開啟责鳍,子線程的消息循環(huán)默認(rèn)不開啟碾褂,只有去get才能創(chuàng)建runloop
1.arc 編譯器自動會插入Release/Retain代碼 在合適的位置釋放( 1. __strong跟作用域有關(guān), __weak跟weak表和作用域有關(guān)历葛,當(dāng)對象自己沒有擁有者也會釋放正塌, 2.如果是方法返回對象默認(rèn)插入autorelease )如果autorelease 是自己手動生成嘀略,會在autorelease drain 變量釋放,如果是隱式創(chuàng)建(每一個線程都包含自己的autoreleasepool Each thread (including the main thread) maintains its own stack of NSAutoreleasePool objects (see Threads)會被添加到最近一次創(chuàng)建的自動釋放池中乓诽,并會在當(dāng)前的 runloop 迭代結(jié)束時釋放也就是runloop)
- 自動釋放池是什么時候創(chuàng)建的帜羊?什么時候銷毀的?
- 創(chuàng)建鸠天,運行循環(huán)檢測到事件并啟動后讼育,就會創(chuàng)建自動釋放池
- 銷毀:一次完整的運行循環(huán)結(jié)束之前,會被銷毀
2.autorelease autoreleasepool 自動創(chuàng)建和runloop的關(guān)系稠集。
autorelease 延遲釋放奶段,實際上是添加到當(dāng)前pool里面了。
autoreleasepool的釋放:
1)剥纷、手動釋放Autorelease pool
2)痹籍、runloop中隱式創(chuàng)建的autoreleasepool Runloop結(jié)束后自動釋放(系統(tǒng)自動去釋放 - 不手動指定autoreleasepool
Autorelease對象出了作用域之后,會被添加到最近一次創(chuàng)建的自動釋放池中晦鞋,并會在當(dāng)前的 runloop 迭代結(jié)束時釋放蹲缠。)
3.nstime和runloop的關(guān)系。
4.查看源碼:cf 和 objc下載悠垛。
http://www.gnustep.org/resources/downloads.php
1线定,實例方法里面的self,是對象的首地址确买。
2渔肩,類方法里面的self,是Class.
1)地址法
student+i和p+i均表示數(shù)組第i個元素的地址拇惋,數(shù)組元素各成員的引用形式為:
(student+i)->name周偎、(student+i)->num和(p+i)->name、(p+i)->num等撑帖。student+i和p+i
與&student[i]意義相同蓉坎。
http://blog.jobbole.com/45963/
http://blog.jobbole.com/65028/
http://blog.csdn.net/lvdezhou/article/details/49510531
http://blog.csdn.net/holandstone/article/details/8282932
http://www.cocoachina.com/industry/20140417/8182.html
http://www.cocoachina.com/industry/20140415/8163.html
(ARC實際上依托于“.cxx_destruct”,現(xiàn)在它為所有的Objective-C類創(chuàng)建了一個函數(shù)來寫所有的自動消除代碼胡嘿。
編譯器通過自動在代碼中添加alloc和dealloc來構(gòu)造和析構(gòu)C++棧對象以確保這種情況蛉艾。在此過程中,編譯器需要創(chuàng)建兩個函數(shù)“.cxx_construct”和“.cxx_destruct”衷敌,這兩個函數(shù)分別被alloc和delloc調(diào)用勿侯。在這寫方法中,執(zhí)行所有相關(guān)的C++處理是必要的缴罗。)
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Helvetica Neue'; color: #454545}p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Helvetica Neue'; color: #e4af0a}p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Helvetica Neue'; color: #454545; min-height: 14.0px}span.s1 {font: 12.0px '.PingFang SC'}
1.iOS 設(shè)備啟動過程
http://blog.csdn.net/hk_5788/article/details/52223662
2.編譯自己的runtime
http://blog.csdn.net/wotors/article/details/52489464