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