IOS之Objective C學習筆記(六)

2021-06-07 11:22:15 字數 4817 閱讀 8414

今天繼續記錄我的學習過程,現在開始:

1.nsarray:是乙個cocoa類,用來儲存物件的有序列表,你可以在nsarray中放入任意型別的物件:nsstring,car,shape,tire或者其他物件。不過值得注意的是,它有兩個       限制,首先它只能儲存objective-c的物件,而不能儲存c語言的基本型別資料,如int,float,enum,struct,或者nsarray中的隨機指標。同時也不能儲存nil。     

[plain]view plain

copy

(1)類方法arraywithobjects ,建立乙個新的nsarray:

nsarray  *array;  

array  =  [ nsarray  arraywithobjects : @"one", @"two", @"three", nil ];  

(2)-(unsigned) count 獲得陣列所包含的物件個數   

和 -(id) objectatindex : (unsigned  int ) index獲得特定引索處的物件 

int  i ;  

for ( i = 0; i < [ array count ]; i++)//輸出index 0 has one, index 1 has two, index 2 has three,在引索越界會報錯!  

2.可變陣列nsmutablearray :     

[plain]view plain

copy

(1)+(id) arraywithcapacity : (unsigned) numitems,建立新的可變陣列: 

nsmutablearray  *array;  

array = [ nsmutablearray arraywithcapacity : 17 ;]  

(2)-(void) addobject : (id) anobject在陣列末尾新增物件; 

(3)-(void) removeobectatindex : (unsigned) index,可以通過它刪除特定引索處的物件:

[ array  removeobjectatindex : 1 ];//值得注意的刪除了這個特定引索的物件時,陣列中並沒有留下漏洞,被刪除物件後面的陣列元素都被前移來填補空缺了。  

3.列舉nsenumerator:

[plain]view plain

copy

(1)-(nsenumerator *) objectenumerator 通過它可以向陣列請求列舉器: 

nsenumerator *enumerator;  

enumerator = [ array objectenumerator];  

//如果想從後向前瀏覽集合,還有乙個方法reverseobjectenumerator可以使用

(2)-(id) nextobject: 向列舉器請求它的下乙個物件: 

nsenumerator *enumerator;  

enumerator = [ array objectenumerator];  

id  thingie;  

while (thingie  =  [ enumerator  nextobject ])//需要注意的是,對可變陣列進行列舉操作時,有一點需要注意,你不能通過新增或刪除物件這類方式來改變陣列容器。  

(3)快速列舉:  

for (nsstring  *string in array)//這個迴圈體將會遍歷陣列的每個元素,並用變數string儲存每個陣列值,它比列舉器語法更為簡潔。  

4.nsdictionary字典,它在給定乙個關鍵字下儲存乙個數值,然你可以通過這個關鍵字來查詢相應的數值。

[plain]view plain

copy

(1)+( id )dictionarywithobjectandkeys:      

( id )firstobject , .......;該方法接受物件和關鍵字交替儲存的系列,以nil值作為終止符號。  

建立儲存輪胎的字典例子:  

nsdictionary  *tires;  

[ tires setobject : t1  forkey : @"front-left"];  

[ tires setobject : t2  forkey : @"front-right"];  

[ tires setobject : t3  forkey : @"back-left"];  

[ tires setobject : t4  forkey : @"back-right"];//如果對字典中已有的關鍵字使用setobject :forkey:,              那麼這個方法將會用新值替換原有數值.  

(2)-(id)objectforkey : (id) akey;通過鍵值獲取字典中對應的值

tire  *tire = [ tires objectforkey : @"back-right" ]; 

(3)+(id)dictionarywithcapacity : (unsigned int) numitems;建立可變字典  

(4)-(void)removeobjectforkey : (id)akey;通過鍵值刪除對應值

[ tires  removeobjectforkey : @"back-left"];  

5.在使用nsstring,nsarray,nsdictionary的時候,注意不要試圖去建立它們的子類。

6.nsnumber 用來包裝類用的:           

[plain]view plain

copy

(1)+(nsnumber *)numberwithchar : (char)value;  

(2)+(nsnumber *)numberwithint : (int)value;  

(3)+(nsnumber *)numberwithfloat : (float)value;  

(4)+(nsnumber *)numberwithbool : (bool)value;//除了這些還有很多,這些是比較常用的,通過建立nsnumber後,可以把它放   入乙個字典和陣列中  

nsnumber *number;  

number = [ nsnumber numberwith : 42];  

[ array addobject : number ];//加進陣列裡  

[ dictionary  setobect : number   forkey : @"bork"];//加入字典裡 

通過以下方法可以重獲得它:  

-(char) charvalue;  

-(int) intvalue;  

-(float) floatvalue;  

-(bool)boolvalue;  

-(nsstring *)stringvalue;  

此外,可以用nuberwithfloat::建立的nsnumber可以用intvalue來提取數值,nsnumber會對資料進行適當的轉換。  

7.nsvalue,它是nsnumber的父類,它可以包裝任何值,可以用它來裝結構體。

[plain]view plain

copy

(1) *(nsvalue *)valuewithbytes :(const void *)value  

objctype : (const char *)type; 建立新的nsvalue,引數一時你想要包裝的數值位址。  

例子:nsrect  rect = nsmakerect(1,2,30,40);  

nsvalue * value;  

value = [nsvalue valuewithbytes :&rect  

objctype : @encode(nsrect)];//@encode編譯器指令可以接受資料的名稱並為你生成合適的字串  

[ array addobject : value ];  

(2)-(void)getvalue : (void *) value;提取數值,例子:

value = [array objectatindex : 0];  

[ value getvalue : &rect ];//傳遞的是要儲存這個數值的變數位址  

(3)cocoa提供餓將常用的strcut型別資料轉換成nsvalue的便捷方法:  

+(nsvalue *)valuewithpoint : (nspoint) point;  

+(nsvalue *)valuewithsize : (nssize)size;  

+(nsvalue *)valuewithrect : (nsrect)rect;  

-(nspoint)pointvalue;  

-(nssize)sizevalue;  

-(nsrect)rectvalue;//一下例子,在nsarray中儲存和檢索nsrect:  

value = [ nsvalue valuewithrect : rect ];  

[ array addobject : value ];  

nsrect  anotherrect = [ value rectvalue ];  

8.nsnull類:只有乙個方法:+(nsnull *)null;例子:[ contact setobject : [ nsnull null ]   forkey : @"home fax machine" ];

9.總結瀏覽集合的三種方式:(1)用陣列的引索遍歷(2)用列舉器(3)用快速列舉

IOS之Objective C學習筆記 三

1.繼承的語法 1 這時是沒使用繼承時的結構圖 2 為了減少 的重複性,我們建立乙個shape類,然後circle和rectangule都繼承它 plain view plain copy inte ce shape nsobject void setfillcolor shapecolor fil...

ios之Objective c物件導向程式設計測試

import inte ce person nsobject void create nsstring name float weight void eat int cnt void walk int num end implementation person void create nsstrin...

IOS開發之路 Objective C 復合

今天先補充一下很有必要記住的東西.物件 d,i 整數 u 無符整形 f 浮點 雙字 x,x 二進位制整數 o 八進位制整數 zu size t p 指標 e 浮點 雙字 科學計算 g 浮點 雙字 s c 字串 s pascal字串 c 字元 c unichar lld 64位長整數 long lon...