1.源文件對(duì)比
- C語(yǔ)言中常見(jiàn)源文件.h頭文件,.c文件
| 文件擴(kuò)展名 | 源類型 |
|---|---|
| .h | 頭文件,用于存放函數(shù)聲明 |
| .c | C語(yǔ)言源文件,用于實(shí)現(xiàn)頭文件中聲明的方法 |
- OC中的源文件.h頭文件,.m與.mm的實(shí)現(xiàn)文件
| 文件擴(kuò)展名 | 源類型 |
|---|---|
| .h | 頭文件,頭文件包含類、方法、屬性的聲明。 |
| .m/.mm | 類的實(shí)現(xiàn)文件,參與編譯的文件,用來(lái)實(shí)現(xiàn)類中聲明的方法 |
—
2.關(guān)鍵字對(duì)比
- C語(yǔ)言的關(guān)鍵字都可以在OC源程序中使用
- OC新增的關(guān)鍵字在使用時(shí),注意部分關(guān)鍵字以"@“開(kāi)頭
3.數(shù)據(jù)類型對(duì)比
- C語(yǔ)言數(shù)據(jù)類型
- OC數(shù)據(jù)類型
| 類型 | 描述 |
|---|---|
| BOOL | 只有兩個(gè)取值真和假 |
| NSObject * | OC中的對(duì)象類型 |
| id | 動(dòng)態(tài)對(duì)象類型,萬(wàn)能指針 |
| SEL | 選擇器數(shù)據(jù)類型 |
| block | 代碼塊數(shù)據(jù)類型 |
4.流程控制語(yǔ)句對(duì)比
- OC增強(qiáng)for循環(huán)(java,C#都有對(duì)應(yīng)語(yǔ)法)
for (NSString * name in NSArray){
NSLog(@”%@”,name);
}
- 注意: 方法只能寫(xiě)在類里面, 而函數(shù)可以寫(xiě)在任何地方
- 對(duì)象方法,使用對(duì)象調(diào)用的方法
- 類方法,使用類名調(diào)用的方法
對(duì)象方法
- (id)initWithString: (NSString * )name;
類方法
+ (MyClass *)createMyClassWithString: (NSString *)name;
5.面向?qū)ο笮略稣Z(yǔ)法
- 屬性生成器
- @property
- @synthesize
//聲明屬性
@property (nonatomic,strong)NSString * name;
//合成屬性
@synthesize name = _name;
- 分類
- 分類與繼承
- 使用分類擴(kuò)展類,無(wú)需子類化
@interface NSString (MyNSString)
- (NSString *) encryptWithMD5;
@end
- 協(xié)議
- 使用協(xié)議聲明方法
- 協(xié)議類似于C#,java中的接口
@protocol MyProtocol
- (void)myProtocolMethod;
@end
6.新增異常處理
用于處理錯(cuò)誤信息
-
格式:
- @try .... @catch .... @finally
示例
//創(chuàng)建對(duì)象car
Car *car = [Car new];
@try {
//調(diào)用一個(gè)沒(méi)有實(shí)現(xiàn)的方法
[car test];
}@catch (NSException *exception) {
NSLog(@"%@",exception.name);
}@finally {
NSLog(@"繼續(xù)執(zhí)行!\n");
}