詳解Objective-C學(xué)習(xí)筆記使用教程
Objective-C的學(xué)習(xí)筆記是本文要介紹的內(nèi)容,主要來學(xué)習(xí)Objective-C的屬性特點(diǎn)、NSAutoreleasePool的了解、Emacs的移動快捷鍵+Xcode常用鍵的內(nèi)容,來看詳細(xì)內(nèi)容講解。
1、Objective-C 屬性特性(assign , retain , copy , readonly , readwrite)
assign:指定setter方法用簡單的賦值,這是默認(rèn)操作。你可以對標(biāo)量類型(如int)使用這個屬性。你可以想象一個float,它不是一個對象,所以它不能retain、copy。
retain:指定retain應(yīng)該在后面的對象上調(diào)用,前一個值發(fā)送一條release消息。你可以想象一個NSString實例,它是一個對象,而且你可能想要retain它。
copy:指定應(yīng)該使用對象的副本(深度復(fù)制),前一個值發(fā)送一條release消息?;旧舷駌etain,但是沒有增加引用計數(shù),是分配一塊新的內(nèi)存來放置它。
readonly:將只生成getter方法而不生成setter方法(getter方法沒有g(shù)et前綴)。
readwrite:默認(rèn)屬性,將生成不帶額外參數(shù)的getter和setter方法(setter方法只有一個參數(shù))。
2、了解NSAutoreleasePool
NSAutoreleasePool是一個存放對象的集合,添加到NSAutoreleasePool的對象能夠被自動釋放。
自動釋放其實就是在NSAutoreleasePool被清空或是銷毀時向池里所有的對象發(fā)送一條release消息。
對象不會自動入池,只有當(dāng)對象發(fā)送一條autorelease消息時才會被添加到當(dāng)前的池中。可以想象池在一個棧中,當(dāng)前池在棧頂,每創(chuàng)建一個新的池,就壓入,使用drain或者release時,就彈出。
當(dāng)有對象是Autorelease的對象,而當(dāng)前沒有NSAutoreleasePool的話,就會提示內(nèi)存泄漏(Just Leaking)。一般來說,只要不是用new、alloc、copy方法創(chuàng)建一個對象的話,我們就假設(shè)該對象的引用計數(shù)為1,而且被添加到NSAutoreleasePool中。
如下面代碼就會提示內(nèi)存泄漏:
- NSDate *date = [NSDate date];
 - NSLog(@"%@",[date description]);
 - return 0;
 - /*
 - objc[3466]: Object 0x1001149c0 of class __NSDate autoreleased
 - with no pool in place
 - - just leaking - break on objc_autoreleaseNoPool() to debug
 - */
 - NSDate *date = [NSDate date];
 - NSLog(@"%@",[date description]);
 - return 0;
 - /*
 - objc[3466]: Object 0x1001149c0 of class __NSDate autoreleased
 - with no pool in place
 - - just leaking - break on objc_autoreleaseNoPool() to debug
 - */
 
關(guān)于drain和release的問題可以在此處找到說明。在非GC環(huán)境下,兩者的作用是相同的。否則你沒有理由去使用release,給NSAutoreleasePool發(fā)送drain會提醒GC處理池中的對象。
3、Emacs的移動快捷鍵+Xcode快捷鍵
雖然不想在學(xué)Emacs的使用,但為了在Mac下使用的更順暢,還是記錄下來,因為這些xcode快捷鍵鍵可以在Xcode、TextEdit、Safari的URL地址欄等處使用。
- control-F 向右邊(Forward)移動
 - control-B 向左邊(Backward)移動
 - control-N 向下(Next)移動一行
 - control-P 向上(Previous)移動一行
 - control-K 刪除(Kill)光標(biāo)后的代碼
 - control-A 移動到行首(同command+左箭頭)
 - control-E 移動到行尾(同command+右箭頭)
 - control-T 轉(zhuǎn)置(Transpose,交換)光標(biāo)兩邊的符號
 - control-D 刪除(Delete)光標(biāo)右邊的字符
 - control-L 將插入點(diǎn)置于窗口正中(不解)
 
Xcode快捷鍵:
- command+[ 左移代碼塊
 - command+] 右移代碼塊
 - Tab 接受代碼提示
 - Ese 顯示代碼提示
 - Control+. 循環(huán)瀏覽代碼提示
 - Shift+Control+. 反向瀏覽代碼提示
 - Control+/ 移動到代碼提示的下一個點(diǎn)位符
 - Command+Control+S 創(chuàng)建快照
 
小結(jié):關(guān)于Objective-C的屬性特點(diǎn)、NSAutoreleasePool的了解、Emacs的移動快捷鍵+Xcode常用鍵的內(nèi)容的內(nèi)容介紹完了,希望通過本文的學(xué)習(xí)能對你有所幫助!















 
 
 
 
 
 
 