初學者必備:Objective-C學習文檔
Objective-C學習文檔是本文要介紹的內容,主要介紹的有數據類型、內存的管理,對象,協議等一些內容,具體內容,來看本文詳解。
一.數據類型
1、NSRange
- typedef struct _NSRange {
- NSUInteger location;
- NSUInteger length;
- } NSRange;
2、NSPoint,NSSize,NSRect
3、NSString
- 方法1:(類方法)stringWithFormat [NSString stringWithFormat:@""]
- 方法2:length
- 方法3:isEqualToString [實例名1 isEqualToString:實例名2]
- 方法4:compare 可以帶參數
- 方法5:hasPrefix hasSuffix
4、NSMutableString
- 方法1:(類方法)stringWithCapacity [NSMutableString stringWithCapacity:表示大小的數字]
- 方法2: appendString appendFormat
- 方法3: deleteCharactersInRange rangeOfString
5、NSArray
- 方法1:(類方法)arrayWithObject 逗號分隔,以nil結束
- 方法2:count objectAtIndex
6、NSMutableArray
- 方法1:(類方法)arrayWithCapacity
- 方法2:addObject removeObjectAtIndex
7、NSEnumerator
- 方法1:objectEnumerator reverseObjectEnumerator
- 方法2:nextObject
8、NSDictionary
- 方法1:(類方法)dictionaryWithObjectsAndKeys 接收對象和關鍵字交替的存儲的系列,以nil結束
- 方法2:objectForkey
9、NSMutableDictionary
- 方法1:(類方法)dictionaryWithCapacity
- 方法2:setObject:forKey: removeObjectForKey
10、NSNumber
用來把基本數據類型包裝成對象的形式
11、NSValue
可以包裝任意值
12、NSNull
- [NSNull null]表示空
二、內存管理
1.Cocoa內存管理規則
(1)當你使用new、alloc或copy方法創建一個對象時,該對象的保留計數器值為1。當不再使用該對象時,你要負責向該對象發送一條release或 autorelease消息(用完后或者在dealloc方法中進行統一釋放)。這樣,該對象將在其使用壽命結束時被銷毀。
(2)當你通過任何其他方法獲得一個對象時,則假設該對象的保留計數器值為1,而且已經被設置為自動釋放,因此就不需要執行任何操作來確保該對象被清理。
自動釋放池:
- NSAutoreleasePool *pool;
- pool = [[NSAutoreleasePool alloc] init];
- [pool release];
如果你打算在一段時間內擁有該對象(使用retain方法),則需保留它并確保在操作完成時釋放它(用完后或者在dealloc方法中進行統一釋放)。
(3)如果你保留了某個對象,則需要(最終)釋放或自動釋放該對象。必須保持retain方法和release方法的使用次數相等。
注:簡單來說,如果使用了alloc,new或copy方法獲得一個對象,則必須進行釋放該對象操作。
三、對象初始化
1.基本知識
(1)Objective-C創建對象有兩種方法:
[類名 new]:直接new一個新對象
[[類名 alloc] init]:先為對象分配內存空間,再為其初始化
(2)在Cocoa中,對象分配和初始化是兩個分離的操作:來自NSObject的類方法alloce為對象分配一塊內存并將其清0;實例方法init用于獲得一個對象并使其運行
2.便利初始化函數
一個類中有的多個初始化函數,即多個以init開頭的方法。
3.指定初始化函數
類中的某個初始化方法被指派為指定初始化函數,該類的所有初始化方法使用指定初始化函數執行初始化操作。子類使用其超類的指定初始化函數實現超類的初始化。
四、特性(property)
1、基礎知識
特性的預編譯指令為@property,作用是自動聲明屬性的setter和getter方法,因此就不必再有為每個屬性都寫的訪問器方法而產生的冗長代碼了。
即使用預編譯指令@property通知編譯器為對象的屬性的setter和getter自動生成方法聲明。
同時使用@synthesis預編譯指令通知編譯器生成對應的訪問器方法。
2、格式
在.H文件中聲明:@property 類型 變量名;
在.M文件中實現:@synthesis 變量名;
3、相關的點語法
訪問屬性的setter和getter方法有兩種方式:
(1)[對象 屬性方法]:Objective-C特有的正規的[ ]方式
(2)對象.屬性方法:和其他語言類似的.方式
4、特行擴展
在特性的聲明里可以指定屬性的一些要求,比如copy,retain,nonatomic,readwrite(默認),readonly等,方式為比如
- @property (retain,nonatomic) 類型 變量;
五、類別
1、基本知識
類別是為現有的類添加新方法的方式
2、格式
(1)聲明:
- @interface 類名(類別名)
- 方法列表
- @end
(2)實現:
- @implementation 類名(類別名)
- 方法實現部分
- @end
3、類別局限性
(1)類別只能添加新方法,無法添加新的實例變量
(2)如果類別名和原來類中的方法產生名稱沖突,則類別將覆蓋原來的方法,因為類別具有更高的優先級
4、類別的作用
通過類別的方式,可以將類的實現分散到不同的文件里。
六、協議
1、基本知識
Objective-C的協議類似Java里的接口概念
2、格式
(1)聲明:
- @Protocol 協議名稱
- 方法聲明列表
- @end
(2)對象采用協議:在@interface類聲明的后面添加<協議名稱>
- @interface 類名 <協議名稱>
(3)對象實現協議:在@implementation里實現協議的方法
- @implementation 類名
- 實現協議的方法
- @end
3、Objective-C 2.0中協議的新特性
(1)@optional預編譯指令:表示可以選擇實現的方法
(2)@required預編譯指令:表示必須強制實現的方法
小結:初學者必備:Objective-C學習文檔的內容介紹完了,希望本文對你有所幫助!