iOS知識點收集(一)

2021-07-28 21:09:03 字數 1031 閱讀 1773

1、變數的儲存區域:

inta=0;//全域性初始化區

char*p1;//全域性未初始化區

main

2、block的深入研究:

深入block,如何捕獲變數,如何儲存在堆上

3、記憶體釋放:

self.test = nil;

[_test release];

_test = nil;

這幾個的區別

先說最簡單的 [_test release]; 這個就是將引用技術減1,所謂的引用計數就是看看有多個指標指向一塊記憶體實體,當release一次,就是指標減少乙個,release到了0的時候,就是真正把這塊記憶體歸還給系統的時候了

再說self.test = nil;說明一下 屬性和setter和getter方法就不難理解了

-(void) settest:(nsstring *)newstring

-(nsstring *)test

這個是setter和getter方法,而在這個問題中相當於剛才的**改變為

if(_test != nil)

[_test release];

_test = nil;

現在就比較容易解釋了,setter方法會retain nil物件,在這之前已經先release了舊的物件,這個方法優點是成員變數連指向隨機資料的機會都沒有,而通過別的方式,就可能會出現指向隨機資料的情況。當release了之後,萬一有別的方法要用要訪問它,如果它已經dealloc了,可能就會crash,而指向nil之後,就不會發生錯誤了。nil說白了就是計數器為0,這麼說吧,當真正release乙個物件的時候,nslog是列印不了它指向的記憶體控制項的,而當nil的時候,是可以列印出來指向的乙個記憶體空間。

那麼現在也不難解釋test = nil; 單純的這種用法可以說是自己給自己製造記憶體洩露,這裡可以這麼理解,就是相當於將指向物件的指標直接和物件一刀兩斷了。直接讓test指向nil,而記憶體實體不會消失,也不會有系統**。

知識點收集

1。正規表示式 備註 今天boss讓我把oracle中的所有表的結構和約束指令碼匯出來,如果說幾十個還好說乙個個導怎麼都行問題是現在1000多個表 最後通過toad導處來,但是問題也隨之而來,有些drop 和alter的script相對別的環境新建來說是不需要的 所以要剔除掉這些語句。一時間自己也想...

知識點收集

隨手記下知識點 方便後面複習。1 機器學習 model a set of function goodness of funtion best function lr相關的推導,與linear regression的對比 svm聚類演算法 gradient descent正則 偏差方差 cost fu...

linux 知識點收集(一)

linux溫習 開始看看一些部落格上的面試題,關於linux的bond是啥來的?可以參考 反正目的就是 當linux系統上有多個單獨網絡卡,又想充分利用這些網絡卡,同時對外提供乙個統一的網路位址,以使得增大網路的吞吐量,同時也提高網路的可用性 吧 看到了linux檔案系統,inode 熟悉的名詞 檔...