------- android培訓、java培訓、期待與您交流! ----------
Objective-C語言是在C語言基礎上,進行部分語法擴展,滿足面向對象編程要求的新的編程語言。支持C語言的基本語法,同時在此基礎上定義了新的語法、語義規則。
OC程序代碼舉例
代碼結構說明:
第1部分處的#import<>為頭文件引入語句
第2部分的NSLog()函數,其功能類似於printf函數,將字符串打印輸出到控制台。
(1) #import與#include的使用異同(面試題)
相同點:兩中用法都可以引入頭文件。
不同點:使用#import可以防止頭文件的重復引入;而使用#include時,需要通過預取指令,判斷是否已經包含某一頭文件,用來防止重復,沒有預取指令則無法防止重復引入。
(2) import與@class的區別(面試題)
1) @class一般寫在類的聲明文件中,即.h頭文件中;import則寫在類的實現文件中,即.m源文件中。
2) import在循環依賴關系中會出現循環包含死循環,造成編譯出錯問題,在傳遞依賴關系中(如A->B,B->C),每次修改都會重新編譯全部頭文件,耗時太長。為了避免以上兩種情況使用@class。
3) @class用來通知編譯器預先定義的類,是一個標識符。
(3) Foundation/Foundation.h頭文件介紹(面試題)
頭文件位置:
頭文件作用:將編寫代碼時需要添加的所有系統頭文件統一引入,方便程序的編寫。
(4) '@'符號功能
1) @+"字符串內容",功能是將字符串轉換為Objective-C中的NSString類型。
2) @+標識符,表明標識符為關鍵字,Objective-C中關鍵字以@開頭,如:@try、@end等等。(5) Objective-C中的注釋
Objective-C有三種注釋:單行注釋、多行注釋(這兩種與C原因相同)與文檔注釋("/**"與"*/")。
文檔注釋示例:
/**
*@brief 求和函數
*參數a,b為int型
*返回值:a+b為int型
*/
- (int)sum:(int) a and:(int) b;
{
return a+b;
}
3.1 Objective-C語言NSLog函數與C語言printf函數的比較
相同點:兩個函數均可以將字符串在控制台顯示輸出。
不同點:相比較printf函數,1)NSLog函數可以輸出日志信息,如運行時間等項目信息。
2)NSLog函數輸出內容可以自動換行。
3)NSLog函數傳遞的參數是NSString類的對象,printf使用字符串地址。
4)NSLog函數輸出字符串時,格式控制符為%@,printf函數使用%s。
3.2 源文件對比
C語言文件類型
.h文件——頭文件,用於進行類的聲明、頭文件的引入等。
.c文件——源文件,程序代碼實現。
.o文件——目標文件,編譯結束后生成的文件,用於鏈接成可執行文件。
.out文件——可執行文件。
Objective-C語言文件類型
.h文件——頭文件,與C語言相同。
.m文件——Objective-C源文件,類的實現文件,參與編譯。
擴展:C++源文件為.cpp文件。
3.3 基本語法對比
(1) 數據類型的對比
C語言數據類型
Objective-C語言數據類型
(2) 關鍵字的對比
C語言關鍵字
總計32個關鍵字,如:數據類型關鍵字char、int等;流程控制關鍵字return、while等。
Objective-C語言關鍵字
1) C語言中的關鍵字均可以在Objective-C語言中使用。
2) Objective-C中新增的關鍵字,需要加'@',如@try、@end、@interface等等,關鍵字self/super除外。
(3) 流程控制語句的差異
C語言中的流程控制語句
1) if else語句
2) switch語句
3) while語句
4) for語句
5) do while語句
Objective-C中的流程控制語句
1) C語言中的基本流程控制語句,在Objective-C中都兼容。
2) Objective-C提供了一種增強型的for循環。
for循環使用舉例:
輸出結果為:one two three
代碼功能分析:該for循環可以遍歷字符串數組的每個字符串,調用NSLog函數可以在控制台顯示輸出。
(4) 函數定義與聲明的差異
C語言函數定義與聲明
1) Main函數前定義,函數不需要再調用時進行函數聲明。
2) Main函數后定義,函數調用時,需要提前進行函數聲明。
代碼舉例:
<span style="font-size:14px;">// 函數聲明.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
/**
*sub函數實現減法功能
*參數:a,b為操作數
*返回值:a-b
*/
int sub(int a,int b){
return a-b;
}
int main(int argc, char* argv[])
{
int a=3,b=2;//定義並初始化操作數a,b
int result;//result存放操作結果
result=sub(a,b);//做減法操作
printf("a-b=%d\n",result);//打印輸出結果
int sum(int a,int b);
result=sum(a,b);//做加法操作
printf("a+b=%d\n",result);//打印輸出結果
return 0;
}
/**
*sum函數實現減法功能
*參數:a,b為操作數
*返回值:a+b
*/
int sum(int a,int b){
return a+b;
}</span>運行結果為:
代碼說明:調用函數sum時,需要提前進行函數聲明。
Objective-C語言函數的定義與聲明:
函數定義格式為:
①方法類型表示符 ②(返回值類型) ③函數名: ④(參數類型) 參數名⑤And: ⑥(參數類型) 參數名 ……
其中①部分取值為‘+’和‘-’,‘+’表示類方法;‘-’表示對象方法。
代碼舉例:+ (void) Test;//無參數函數定義或聲明
- (int) sum: (int) a and:(int) b;
類方法與對象方法的聲明與實現,分布需要放在@interface與@end、@implementation與@end之間。
3.4 Objective-C新增數據類型
布爾類型取值為true和false,可以用於條件控制語句的判斷,當變量為true時,以整型格式輸出值為1,使用代碼以及測試結果舉例為:
3.5 異常捕捉
為了提高程序的健壯性,需要用到異常處理語句,異常捕捉的作用將程序運行過程中的異常(如地址越界)捕捉到,進而運行異常處理語句,保證程序的正常退出。
代碼實例:
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。