五 Foundation框架中常用類的介紹

2021-05-23 22:51:32 字數 1997 閱讀 1013

nsstring *temp =[[nsstring alloc] initwithstring:@"test"];

//nslog(@"%d",[temp retaincount]);

[temp release];

//nslog(@"%d",[temp retaincount]);

你猜nslog會輸出什麼,是我們想要的testnsstring麼?有興趣的可以在xcode中建立乙個控制台程式,把上面的**複製進去,可以看到確實是我們預期的結果。學習過objective c記憶體管理的肯定就會有疑問了,temp已經釋放了,為什麼str中還能和temp中的字串拼接那?

首先還是先看段**,眼見為實,**可以說明一切。假如你有兩個類person和animal那麼你就可以寫如下的**,來訪問你定義再array物件中的例項了:

person *aman = [[person alloc] init];

animal *dog   = [[animal alloc] init];

nsarray *arymammal = [[nsarray arraywithobjects:aman,dog]];

[aman release];

[dog release];

for(id something for arymammal)

nslog(@"%@", [something getname]];  //假如說你定義的類有這個方法可以獲得物件的名字

下面來看下nsmutablearray的一些特徵。當你想要遍歷乙個nsmutablearray的時候,然後找到某個特殊的物件,用另外乙個物件替代這個物件的時候,**如下:

int i = 0;

for(id temp in mutableary)

if([temp equal:aobject])

[mutableary replaceobjectatindex:i withobject:aobject];

i++;

這樣的**可以執行麼?答案是只要你的程式進到了if語句裡面,下次執行for迴圈的時候程式就會崩潰,報出的錯誤是bad access,在之後的部落格裡我會和大家一塊分享下,xcode程式執行中的常見錯誤。下面就來分析下這種錯誤的原因吧。

用for(id temp in mutablearray)的時候,切記不能在for迴圈中為mutablearray新增任何東西,因為for迴圈在開始的時候,會把array中的所有資料都放到乙個stack中,stack中存著array中物件的指標。如果你改變了array中的物件,原來物件的指標就銷毀了,而stack中仍然存著這個指標,訪問的時候程式會bad access從而crash。

下面再來看下nsarray的乙個特殊的用法,就是在陣列中放置dictionary的時候,陣列同樣可以用valueforkey的方法來訪問dictionary中的value。**演示如下:

nsdictionary *dic1 = [nsdictionary dictionarywithobjectsandkeys:@"1",@"sky",nil];

nsdictionary *dic2 = [nsdictionary dictionarywithobjectsandkeys:@"2",@"zhiwei",nil];

nsdictionary *dic3 = [nsdictionary dictionarywithobjectsandkeys:@"1",@"mengtnt",nil];

nsmutablearray *ary = [[nsmutablearray alloc] init];

[ary insertobject:dic1 atindex:0];

[ary insertobject:dic2 atindex:0];

[ary insertobject:dic3 atindex:0];

nsstring *str = [[ary valueforkey:@"1"] objectatindex:1];

nslog(@"%@",str);

好了時間不早了,也就先介紹下這兩個主要的類吧,以後再和大家分享其他類的學習心得吧!

Foundation框架中常用類的介紹 小結1

有興趣的可以在xcode中建立乙個控制台程式,把上面的 複製進去,可以看到確實是我們預期的結果。學習過objective c記憶體管理的肯定就會有疑問了,temp已經釋放了,為什麼str中還能和temp中的字串拼接那?首先還是先看段 眼見為實,可以說明一切。假如你有兩個類person和animal那...

Foundation框架 集合

foundation框架 集合 一 nsarray和 nsmutablearray 一 nsarray不可變陣列 1 nsarray的基本介紹 nsarray是 oc中使用的陣列,是物件導向的,以物件導向的形式操縱物件,是不可變陣列。c語言陣列有乙個缺點即陣列中只能存放同種資料型別的元素。oc陣列只...

Foundation框架 集合

foundation框架 集合 一 nsarray和 nsmutablearray 一 nsarray不可變陣列 1 nsarray的基本介紹 nsarray是 oc中使用的陣列,是物件導向的,以物件導向的形式操縱物件,是不可變陣列。c語言陣列有乙個缺點即陣列中只能存放同種資料型別的元素。oc陣列只...