學習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中使用)