學習Object C也有段時間了,學習的過程中涉及到了很多Object C中的關鍵字,本文總結一下所涉及到的關鍵字以及基本語法。
1. #import
#import <> 從system目錄中查詢標頭檔案,不會檢查當前目錄。
#import "" 首先在當前目錄中查詢,如果未找到,則在Xcode設定的預處理程式搜尋路徑中查詢檔案。
#import 指令可以防止標頭檔案被重複包含
2. typedef
用於給一個型別定義新名稱 或 簡化較為複雜的型別宣告,可以參考文章<Object C 學習筆記--typedef用法>
3. #define
用於巨集定義預處理,可以參考文章<Object C學習筆記22-#define 用法>
4. 定義類
*.h 用於定義類的標頭檔案
@interface 類 : 父類
@end
*.m Object C中的類檔案
@implementation 類
@end
5. 類方法定義
-(返回值型別) 函式名: (型別) value 引數名: (型別) value ….
-(int) speak:(int) a andName:(NSString*) address;
必須使用累的例項來呼叫
6.全域性方法定義
+(返回值型別) 函式名: (型別) value 引數名: (型別) value ….
+(int) speak:(int) a andName:(NSString*) address;
直接使用類呼叫,不需要例項,相當於靜態方法,和類方法不同之處在於 "+" 和 "-" 的區別
7. super
用於子類呼叫父類方法,在過載的時候用的比較多
8.@selector
獲取方法的編號,相當於獲取函式指標,SEL sel1=@selector(eat);
9. @class
@class 來告訴編譯器這是一個類,編譯器只需要通過指標來引用它即可,並不需要知道關於這個類的更多資訊,可以用來減少編譯。
10.@protocol
用於定義一個協議,相當於.NET中的介面interface
11.@property
用於定義類屬性,比如@property (nonatomic,retain) NSString *name; 相當於實現get和set方法,寫在類的*.h檔案中
12.@synthesize
用於實現在標頭檔案中描述實現的類屬性,一般和@property同時使用; 例如:@synthesize name; 這個寫在類的*.m檔案中
13. id
id是儲存“指向物件的指標”的型別。宣告為id的變數,可以儲存指向任何Objective-C物件的一個指標
14. retain
通知編譯器向分配給此屬性的物件傳送一個保留訊息,這將確保屬性底層的例項變數在使用過程中不會從記憶體中消失。釋放舊物件,將就物件的值賦予新物件,在增加新物件的索引計數1 (在@property中使用)
15. nonatomic
不給set方法加鎖,在多執行緒訪問的時候會出現併發問題 (在@property中使用)
16. assign
簡單的賦值,不更改索引的計數(在@property中使用)
17. copy
建立一個索引計數為1的物件,然後釋放舊物件(在@property中使用)
18.readonly
將只生成get方法而不生成set方法(在@property中使用)
19.readwrite
預設屬性,將生成不帶額外引數的get和set方法(在@property中使用)
20.atomic
相當於set方法加鎖,當多執行緒訪問的時候,只有當一個執行緒訪問結束之後另外一個執行緒才能執行(在@property中使用)