運(yùn)算表達(dá)式:
先左后右,高級(jí)運(yùn)算符優(yōu)先于低級(jí)運(yùn)算符
OC 數(shù)據(jù)類型:
- 基本數(shù)據(jù)類型
- 構(gòu)造類型
- 指針類型
- 對(duì)象數(shù)據(jù)類型
1.id是一種泛型,用于表示任何種類的對(duì)象。需要注意的是id是一個(gè)指針,所以在使用id的時(shí)候不需要加星號(hào)。
2.枚舉數(shù)據(jù)類型、typedef 語(yǔ)法
3.布爾類型 BOOL : YES NO
- sel選擇器 SEL是selector的一個(gè)類型、作用就是得到一個(gè)方法指針
SEL oneMethod=@selector(render);//聲明一個(gè)SEL變量,并且賦值為方法render的指針
[oneObject performSelector: oneMethod];//假設(shè)oneObject已經(jīng)實(shí)例化,執(zhí)行render方法
5.nil和Nil:
nil表示一個(gè)Objctive-C對(duì)象,這個(gè)對(duì)象的指針指向空。在objective-c中,向一個(gè)空的對(duì)象發(fā)送消息是合法的。
例如:
Car * myCar=nil;//聲明一個(gè)Car的變量并且賦值為空,此時(shí)myCar相當(dāng)于空對(duì)象
if(myCar) //判斷myCar對(duì)象是否為空,如果為空就執(zhí)行startEngine方法
{
[myCar startEngine];
}
如果我們直接去掉if判斷條件,在Obj-C中是不會(huì)做任何操作的,因?yàn)镺bj-C中如果一個(gè)空對(duì)象調(diào)用任何方法,都是不會(huì)做任何操作的
Nil定義一個(gè)指向空的類(是Class,而不是對(duì)象)。
6.IMP:IMP是一個(gè)指向函數(shù)的指針,這個(gè)被指向的函數(shù)包括id(“self”指針),調(diào)用的SEL(方法名),再加上一些其他參數(shù)。
7.class 定義了各種內(nèi)部變量, 數(shù)據(jù)和各種你能夠調(diào)用的方法methods,以及你能夠執(zhí)行的各種動(dòng)作action。 - method
method(我們常說(shuō)的方法)表示一種類型,這種類型與selector和實(shí)現(xiàn)(implementation)相關(guān)。
基本數(shù)據(jù)類型 :
整型 int ,
字符型 char ,
浮點(diǎn)型 (單精度 float 和 雙精度 double),
枚舉型 (在計(jì)算機(jī)內(nèi)部以int類型存儲(chǔ))
構(gòu)造類型 :
數(shù)組類型, 結(jié)構(gòu)體類型, 共用體類型
指針類型 :
最終要的數(shù)據(jù)類型, 所有的系統(tǒng)類, 自定義類都是指針
基本數(shù)據(jù)類型 修飾詞:
short短型,修飾 int、double;
long長(zhǎng)型, 修飾 int、double;
signed有符號(hào)型, 修飾 int、char;
unsigned 無(wú)符號(hào)型,修飾 int、char;
1.這些限定詞經(jīng)常用來(lái)限定int型,在限定int類型時(shí)int可以省略;
2.short和long會(huì)改變int型的長(zhǎng)度,在不同編譯器長(zhǎng)度不相同,但是一般short長(zhǎng)度不大于int,int長(zhǎng)度不大于long;
3.signed和unsigned不會(huì)改變類型長(zhǎng)度,僅表示最高位是否為符號(hào)位,其中unsigned表示大于等于0的正數(shù);
4.可以使用long long來(lái)修飾一個(gè)整型,但是long long不能修飾double;
5.不存在short short;
6.浮點(diǎn)型常量后面加f,編譯器認(rèn)為是float類型,否則是double類型;
取值范圍:
int: -2147483648~2147483647
unsigned int:0~4294967295
short: -32768~32767
unsigned short: 0~65535
long: -2147483648~2147483647
unsigned long: 0~4294967295
存儲(chǔ)空間
不同位數(shù)(16 32 64)的編譯器下,存儲(chǔ)空間不一樣。

占位符以及NSLog輸出:

%p 打印的是指針變量的值 也就是指向的對(duì)象的首地址
%@ 打印的是指針變量指向的對(duì)象.
NSInteger與int的區(qū)別是NSInteger會(huì)根據(jù)系統(tǒng)的位數(shù)(32or64)自動(dòng)選擇int的最大數(shù)值(int or long)。
// int 是一種數(shù)據(jù)類型,可以聲明整形變量。有了變量后,就可以對(duì)變量賦值,包括傳參!
// 函數(shù)指針 是一種數(shù)據(jù)類型,可以聲明指向函數(shù)的指針變量,有了變量,就可以對(duì)這個(gè)變量賦值,包括傳參!
// SEL 是一種數(shù)據(jù)類型,可以聲明保存對(duì)象里方法的變量!(保存成員方法名),有了變量后,就可以對(duì)變量賦值,包括傳參!
// sortUsingSelector: 這個(gè)是數(shù)組已經(jīng)實(shí)現(xiàn)的排序方法.但是,對(duì)什么內(nèi)容排序,如何排序,這個(gè)
// 準(zhǔn)則,需要我們通過(guò)selector來(lái)提供。
// [dogArray sortUsingSelector:@selector(largerThanDog:)];
SEL sel = @selector(largerThanDog:);
[dogArray sortUsingSelector:sel];
1.nil用來(lái)給對(duì)象賦值(OC的任何對(duì)象都屬于id類型),Null則給任何指針賦值,NULL和nil不能互換,nil用于類指針賦值(在OC中類是一個(gè)對(duì)象,是類的meta-class的實(shí)例),而NSNull則用于集合操作,雖然它們表示的都是空值,但使用場(chǎng)合不同。
2.OC有個(gè)特性,就是當(dāng)發(fā)送消息給nil對(duì)象使,系統(tǒng)返回0值而不是引起異常,這和Java的NullPointerException以及C/C++的程序直接崩潰的處理完全不同,因?yàn)閚il是對(duì)象的合法值,nil對(duì)象同樣可以接收消息。
3.nil被定義為空對(duì)象,也就是值為0的對(duì)象。
結(jié)構(gòu)體:
枚舉: