Xcode基礎 Objective C中的陣列詳解

2021-06-25 14:12:09 字數 2336 閱讀 8620

有些時候,你需要使用一系列資料。比如一堆字串,將每乙個串都賦乙個變數將是一件很麻煩的事情。當然,objective-c中,這裡有更好的解決方案:陣列(array)。乙個陣列是一組有序的物件列表(更具體的說是一組物件指標的列表)。你可以向陣列新增物件,移除物件,或者檢視陣列的給定位置上存放了哪個物件。你也可以檢視陣列裡包含了幾個元素。

我們數數習慣由1開始。在陣列中,第乙個元素的索引是0,第二個索引是1,以此類推。

本文後面的部分還會有一些例子來說明從0開始計數的作用。

有兩個類提供了陣列:nsarray和nsmutablearray。帶有字串的陣列分為固定陣列和可變陣列兩種。在本章中,我們只體積可變陣列。

通過執行下面這個步驟可以建立陣列:

[nsmutablearray array]

這個語句會產生乙個空陣列。但是……請等等,這句**有些古怪,不是麼?實際上,這個例子中我們使用類nsmutalbearray的名字來說明資訊接收方。但是我們希望向類的乙個例項傳送資訊,而不是類本身。

好了,我們又學到了一些新的東西:事實上,在objective-c語言中,我們可以向類傳送資訊(原因是類本身也是物件,它是被元類(meta-class)的例項,但本書中不再就此問題做深入**)。在cocoa的說明檔案中,能夠直接作用於類的方法(類方法)名稱前用加號「+」標示,與前面表示減號「-」的例項方法不同(見第8章例[4.5])。在說明檔案中我們可以見到對方法array這樣的描述:

再回到**中,下面的程式用於建立乙個空的陣列,並將三個字串儲存在其中,之後顯示陣列元素個數。

例[1]

#import

intmain (int

argc, const

char

* argv)

執行結果如下:

there are 3 elements in my array

接下來的程式和前面的大體一致,只是最後顯示儲存在索引0中的的字串。為此,我們在語句行[2.13]中使用了方法「objectatindex:」。

例[2]

#import

int main (int argc, const char * argv)

這次的執行結果如下:

the element at index 0 in the array is: first string

你將會經常需要檢視陣列中的每乙個元素以便進行其它操作。為此你可以參照下面例子,使用迴圈語句按照索引順序顯示陣列中的每個元素:

#import

int main (int argc, const char * argv)

[pool release];

return 0;

}

執行結果如下:

the element at index 0 in the array is: first string

the element at index 1 in the array is: second string

the element at index 2 in the array is: third string

需要注意的是陣列不僅僅可以用於字串操作。它可以用於任何你希望用陣列操作的物件。

類nsarray和類nsmutablearray提供了許多其它方法,希望你能夠通過檢視說明檔案進一步學習與陣列操作相關的知識。我們把置換陣列內元素這個問題作為本章的結束。置換陣列內元素要使用到方法「replaceobjectatindex:… withobject:…」。到目前為止,我們見到的方法最多只有乙個引數,而這個方法不同,這就是為什麼你在這裡看到它,它帶有兩個引數。其實你可以看出來的,因為這個方法帶有兩個冒號。在objective-c語言的方法可以使用任意多引數。下面是這個方法的語法:

[myarray replaceobjectatindex:1 withobject:@"hello"];

執行這個方法後,索引1中的物件已經變成了字串@」hello」。當然,這個方法只能援引那些有效的索引。換句話說,原來索引中應當有物件,我們才可以用這個方法置換進新的物件。你可能發現了,objective-c語言的方法的名字好似句子填空。當你要使用乙個方法,只要填上你需要的值構成乙個有意義的「句子」即可。這種給方法命名的方法**於smalltalk(一種由xerox公司開發的物件導向的系統——譯者按),也是objective-c語言一大特色,它可以大大增強**的描述性。當建立自己的方法時,你也應當盡量按照這種方法命名,不僅可以提高**的可讀性,而且使你的程式便於維護。

Windows上編譯,學習Objective c

3 配置環境變數 這一步很重要。gnustep.sh是用來設定gnustep開發環境變數的,如果沒有執行,就會有很多標頭檔案,庫檔案,命令找不到 在乙個目錄裡寫好了源 以後,編寫乙個make配置檔案,名字必須叫gnumakefile,內容是 include gnustep makefiles com...

Windows下編譯執行Objective C

參考 安裝很簡單,按照順序 gnustep system gnustep core gnustep developer 安裝即可。安裝完成後,我們可以用 程式 gnustep shell 來啟動乙個模擬 unix 控制台,在這下面可以完成開發 編譯 執行等工作。首先我們來寫乙個 helloworld...

NSArray 不可變陣列 Objective C

陣列是有序的物件集合,一般情況下,乙個陣列中的元素都是相同型別的。類似可變字串與不可變字串,陣列也有可變與不可變之分。nsarray 不可變陣列 常用方法 id arraywithobjects obj1,obj2,nil 建立乙個新的陣列,obj1,obj2.是他的元素物件,以nil物件結尾 bo...