1.源文件對比
- C語言中常見源文件.h頭文件,.c文件
文件擴(kuò)展名 | 源類型 |
---|---|
.h | 頭文件谨胞,用于存放函數(shù)聲明 |
.c | C語言源文件,用于實(shí)現(xiàn)頭文件中聲明的方法 |
- OC中的源文件.h頭文件市怎,.m與.mm的實(shí)現(xiàn)文件
文件擴(kuò)展名 | 源類型 |
---|---|
.h | 頭文件荞下,頭文件包含類决侈、方法、屬性的聲明牵舱。 |
.m/.mm | 類的實(shí)現(xiàn)文件串绩,參與編譯的文件,用來實(shí)現(xiàn)類中聲明的方法 |
2.關(guān)鍵字對比
- C語言的關(guān)鍵字都可以在OC源程序中使用
- OC新增的關(guān)鍵字在使用時(shí),注意部分關(guān)鍵字以"@"開頭
關(guān)鍵字對比.png
3.數(shù)據(jù)類型對比
- C語言數(shù)據(jù)類型
C語言數(shù)據(jù)類型.png
- OC數(shù)據(jù)類型
OC數(shù)據(jù)類型.png
類型 | 描述 |
---|---|
BOOL | 只有兩個(gè)取值真和假 |
NSObject * | OC中的對象類型 |
id | 動(dòng)態(tài)對象類型芜壁,萬能指針 |
SEL | 選擇器數(shù)據(jù)類型 |
block | 代碼塊數(shù)據(jù)類型 |
- OC中的類
- Objective-C是一種面向?qū)ο蟮恼Z言,定義類是它的基本能力礁凡。
- 那什么是類呢?類是用來描述對象的慧妄,它是一系列方法和屬性的集合
- Objective-C的類聲明和實(shí)現(xiàn)包括兩個(gè)部分:接口部分和實(shí)現(xiàn)部分顷牌。
- 想要定義方法也就C語言中的函數(shù),那么就必須先有類的存在
4.流程控制語句對比
- C語言中使用的流程控制語句OC中都可以應(yīng)用
if 語句
switch語句
while語句
do while語句
for語句
break關(guān)鍵字
continue關(guān)鍵字
- 增強(qiáng)for循環(huán),用于快速迭代數(shù)組或者集合
- C語言for循環(huán)
for (int i = 0; i < 10; i++){
printf(“%d”,i);
}
- OC增強(qiáng)for循環(huán)
for (NSString *name in NSArray){
NSLog(@”%@”,name);
}
5.函數(shù)(方法)定義和聲明對比
- C語言中函數(shù)的聲明和實(shí)現(xiàn)
- 函數(shù)聲明:int sum(int a,int b);
- 函數(shù)實(shí)現(xiàn):int sum(int a,int b){ return a+b; }
- OC中的方法
- 方法聲明:- (int)sum:(int) a andB:(int) b;
- 方法實(shí)現(xiàn):- (int)sum:(int) a andB:(int )b{ return a+b; }
- 注意: 方法只能寫在類里面, 而函數(shù)可以寫在任何地方
- 對象方法塞淹,使用對象調(diào)用的方法
- 類方法窟蓝,使用類名調(diào)用的方法
對象方法
- (id)initWithString: (NSString *)name;
類方法
+ (MyClass *)createMyClassWithString: (NSString *)name;
6.面相對象特性
- 封裝性
- 繼承性
- 多態(tài)性
7.面向?qū)ο笮略稣Z法
- 屬性生成器
- @property
- @synthesize
//聲明屬性
@property (nonatomic,strong)NSString *name;
//合成屬性
@synthesize name = _name;
- 分類
- 分類與繼承
- 使用分類擴(kuò)展類,無需子類化
@interface NSString (MyNSString)
- (NSString *) encryptWithMD5;
@end
- 協(xié)議
- 使用協(xié)議聲明方法
- 協(xié)議類似于C#,java中的接口
@protocol MyProtocol
- (void)myProtocolMethod;
@end
- Fundation框架
- 創(chuàng)建和管理集合饱普,如數(shù)組和字典
- 訪問存儲在應(yīng)用中的圖像和其他資源
- 創(chuàng)建和管理字符串
- 發(fā)布和觀察通知
- 創(chuàng)建日期和時(shí)間對象
- 操控URL流
- 異步執(zhí)行代碼
8.新增異常處理
- 用于處理錯(cuò)誤信息
- 格式:
- @try .... @catch .... @finally
- 示例
//創(chuàng)建對象car
Car *car = [Car new];
@try {
//調(diào)用一個(gè)沒有實(shí)現(xiàn)的方法
[car test];
}@catch (NSException *exception) {
NSLog(@"%@",exception.name);
}@finally {
NSLog(@"繼續(xù)執(zhí)行!\n");
}
9.#import和#include區(qū)別
-
#import與#include的類似运挫,都是把其后面的文件拷貝到該指令所在的地方
-
#import可以自動(dòng)防止重復(fù)導(dǎo)入
-
#import <> 用于包含系統(tǒng)文件
-
#import""用于包含本項(xiàng)目中的文件
-
#import , 告訴編譯器找到并處理名為Foundation.h文件,這是一個(gè)系統(tǒng)文件,#import表示將該文件的信息導(dǎo)入到程序中。
-
框架地址: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneO S.sdk/System/Library/Frameworks/
10.NSLog 和printf區(qū)別
-
NSLog是Foundation框架??供的Objective-C日志輸出函數(shù),與標(biāo)準(zhǔn)C中的printf函數(shù)類似,并可以格式化輸出费彼。
- NSLog傳遞進(jìn)去的格式化字符是NSString的對象,而不是char *這種字符串指針
- NSLog輸出的內(nèi)容中會自動(dòng)包含一些系統(tǒng)信息
- NSLog輸出的內(nèi)容會自動(dòng)換行
-
NSLog聲明在NSObjCRuntime.h中
- 聲明:void NSLog(NSString *format, ...);
NSLog(@“this is a test”); //打印一個(gè)字符串
NSString *str = @"hello xiaomage!”;
NSLog(@"string is:%@",str);//使用占位符,%@表示打印一個(gè)對象,%@ OC特有的
NSLog(@"x=%d, y=%d",10,20);//使用多個(gè)占位符,%d表示整型數(shù)
11.“@”的使用方法
- 在OC中“@”有特殊的用法
- @"" 這個(gè)符號表示將一個(gè)C的字符串轉(zhuǎn)化為OC中的字符串對象NSString.
- @符號 OC中大部分的關(guān)鍵字都是以@開頭的,比如@interface,@implementation,@end @class等滑臊。
12.NS前綴
- NS來自于NeXTStep的一個(gè)軟件 NeXT Software
- OC中不支持命名空間(namespace)
- NS是為了避免命名沖突而給的前綴
- 看到NS前綴就知道是Cocoa中的系統(tǒng)類的名稱