黑馬程序員——Objective-C語言知識整理——Objective-C語言基礎知識總結


------- android培訓java培訓、期待與您交流! ----------

1、Objective C語言簡介

       Objective-C語言是在C語言基礎上,進行部分語法擴展,滿足面向對象編程要求的新的編程語言。支持C語言的基本語法,同時在此基礎上定義了新的語法、語義規則。

2、Objective-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、Objective-C與C語言的比較

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 異常捕捉

        為了提高程序的健壯性,需要用到異常處理語句,異常捕捉的作用將程序運行過程中的異常(如地址越界)捕捉到,進而運行異常處理語句,保證程序的正常退出。

代碼實例:



注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
  © 2014-2022 ITdaan.com 联系我们: