oc基本简介
oc是面向對象的語言;
遵從ANSI C 標準C語法,使用了Smalltalk的方法
第一個oc程序;
?
| #import <Foundation/Foundation.h>????? | ? 告訴編譯器找到并處理名為Foundation.h的文件,這是一個系統文件; #import表示將該文件信息導入到程序中 |
| int main(int argc, const char * argv[]){ | 這是程序的入口???? 參數argc-參數數目????? argv - 參數值 |
| @autoreleasepool { | 自動釋放池,用于回收對象的存儲空間 |
| NSLog(@"我要裝逼!"); | NSLog是Foundation框架提供的輸出函數,可以格式化輸出 |
}
| return 0; | 安全退出 |
}
?
?
NSLog的介紹
NSLog是cocoa的框架中提供的一個方法
NSLog定義在NSObjCRuntime.h中
基本上,NSLog很像printf,同樣會在console中輸出顯示結果。不同的是,傳遞進去的格式化字符是NSString 的對象,而不是chat *這種字符串指針
?
用法:
NSLog(@"this is a test"); //打印一個字符串
?
NSString *str = @"hello world!";
(@"string is:%@",str);//使用占位符,%@表示打印一個對象,%@ OC特有的
?
NSLog(@"x=%d, y=%d",10,20);//使用多個占位符,%d表示整型數
?
?
不能使用Printf打印OC中的對象 (%@占位符不能用),沒有結果。
?
?
@的使用
在OC中“@”有特殊的用法
1)@"" 這個符號表示將一個C的字符串轉化為OC中的字符串對象NSString.
2)@標識符 OC中大部分的關鍵字都是以@開頭的,比如@interface,@implementation,@end
?
2、OC中注釋 OC中的注釋有兩種:
1)單行注釋:
//
2)多行注釋:
/* */
3)文檔注釋
/**
* 狗吃食物的方法
@class等。
*
* @param foodName 參數描述
*/
程序編譯時,不對注釋做任何處理
注意可以出現在程序的大部分的位置。
?
?
?
源文件對比
| 擴展名 | 含義 |
| .h | 頭文件 |
| .c | c語言源文件 |
| .cpp? .c | c++語言的源文件 |
| .m | OC的源文件 |
| .mm | OC++的源文件 |
?
?
oc中常用文件有兩種:
| ??? .h | 頭文件,頭文件包含方法,屬性的聲明??????????????????????????????????????????? |
| .m | 類的實現文件,參與編譯的文件,用來實現類中聲明的方法 |
?
?
?
?
oc的基本數據類型
?
?
?
| 類型 | 描述 |
| BOOL | 字面常量值是YES或者NO |
| NSObject * | OC中的對象類型 |
| id | 動態對象類型,萬能指針 |
| SEL | 選擇器數據類型 |
| block | 代碼塊數據類型 |
?
?
?
方法
?
函數(方法)定義和聲明對比
C語言中函數的聲明和實現
函數聲明:
nt sum(int a,int b);
函數定義
int sum(int a,int b){
return a+b; }
OC語言中函數習慣稱之為“方法”
方法聲明:
-(int)sum:(int) a and:(int) b;
??方法定義
-(int)sum:(int) a and:(int )b{
return a+b; }?
?
?
Boolean
Boolean 類型指的是用于存儲真值和假值的變量,一般用于程序流程控制.
Boolean類型數據允許取值true 或 false, 也可以是0或非0的整數替代true和false ,這點和java語言不同.
?
? int main(int argc , const char * argv[] ){
@autoreleasepool{
//邏輯型,用于存放true(真) 或者fales(假)
Boolean flag = true;
if(flag==1){
NSLog(@"xxxxxx");
}
}
return 0;
}
BOOL也是用作邏輯判斷
?
?
?
OC 中的新增異常捕捉方法
@try .... @catch .... @finally
格式:
@try {
< #statements#>
}
@catch (NSException *exception) { //捕捉最具體的異常類型 < #handler#>
}
@catch (NSException *ne) { //捕獲一個比較重要的異常類型。
}
@catch (id ue) { //再次擲出捕獲的異常。
}
@finally { //不管有沒有異常finally內的代碼都會執行。 < #statements#>
}
?
代碼有可能拋出有可能拋出的異常是封閉在一個@ try塊。 @catch()塊包含為@ try 塊拋出的 異常的異常處理邏輯。一個@ finally塊包含代碼必須執行是否引發異常與否。您可以使用@throw指令拋出一個異常,這基本上是一個對Objective – C對象的指針。你可以使用NSException對象 但不限于他們?
?
轉載于:https://www.cnblogs.com/Qinsp/p/4547738.html
總結
- 上一篇: 理解端口与IP
- 下一篇: tableView中deselectRo