知識點
1.NSArray
2.NSMutableArray
1.數組的根本用法;
2.數組的遍歷
3.數組排序
=========== NSArray 不可變數組 =================
1、OC數組和c數組的區別
C言語的數組:
相反類型變量的有序結合。 類型:可以是簡答數據類型、結構數據類型
int a[10];
int *b[10];
1)NSArray是一個對象,是恣意類型對象地址的集合
不能寄存復雜的數據類型(int, float, NSInteger…)
除非經過一些手腕把復雜數據類型變成對象。
2)C數組可以保管恣意類型的數據
3)NSArray下標越界不會有正告,但是運轉會直接報錯
2、如何創立一個空數組
NSArray *array = [[NSArray alloc] init];
array = [NSArray array];
3. 經過指定對象創立數組
//只要一個元素
array = [NSArray arrayWithObject:@"aaa"];
//有n個元素
array = [NSArray arrayWithObjects:@"1111",@"2222",@"333", nil];
4.經過指定數組創立數組(兩個數組內容的一樣)
[NSArray arrayWithArray:數組];
5.經過復雜的方式創立數組
array = @[];//空數組
array = @[@"111",@"222",@"333"];//3個元素
6.把數組中一切的元素轉化為字符串
[array componentsJoinedByString:@“兩個元素之間添加的字符串”];
7.獲取數組元素個數
[array count]
8.經過索引獲取相應的元素(下標要小於數組的count)
[array objectAtIndex:下標];
復雜取值:array[下標]
9.經過對象獲取在數組中的索引(經過元素獲取下標)
[array indexOfObject:要找的元素]
10.取出數組的最後一個元素或許第一個元素
//取第一個元素
[array firstObject];
//取最後一個
[array lastObject];
11.判別數組中數組包括某個元素
[array containsObject:要查找的對象]
12.如何取出數組中的一局部元素
//索引的集合,保管索引的,NSIndexSet是一個集合類(索引的集合),但是集合外面不能有反復索引
//只初始化一個索引 NSIndexSet *indexSet = [NSIndexSet indexSetWithIndex:2]; //下標為1,長度為2 NSRange range = NSMakeRange(0, 3); //結構一個范圍的索引 indexSet = [NSIndexSet indexSetWithIndexesInRange:range]; [array objectsAtIndexes:indexSet]
13.判別NSArray中存儲的對象能否為指定類型的對象
/*
[A isKindOfClass:B],判別A類能否是B的子類或許本類。
[A isMemberOfClass:B],判別A類能否是B類(不包括子類)
*/
14.判別兩個數組內容能否相反(與順序有關)
NSArray *arr1 = @[@"111",@"222",@"333"];
NSArray *arr2 = @[@"111",@"333",@"222"];
if ([arr1 isEqualToArray:arr2])
{
NSLog(@"內容完全相等");
}
else
{
NSLog(@"內容不完全相等");
}
15.把數組寫入文件中(數組外面是:NSString,int,float,double......)
[array writeToFile:path atomically:YES]
16.從文件中讀取數組
[NSArray arrayWithContentsOfFile:path]
17.根本類型的包裝類
NSNumber
//把int類型包裝成對象
numberWithInt
18.截取數組中指定范圍的元素
[array subarrayWithRange:要截取的范圍]
============= NSArray數組的遍歷 ===========
1.經過下標遍歷數組
for (int i = 0 ; i < [array count]; i++)
{
NSLog(@"%@",array[i]);
}
2、NSEnumerator 枚舉器
1)objectEnumerator音訊
作用:正序輸入一切元素
NSEnumerator *enumerator = [array objectEnumerator];
2)reverSEObjectEnumerator音訊
作用:逆序輸入一切元素
enumerator = [array reverSEObjectEnumerator];
//取下一個元素
[enumerator nextObject]
3.疾速枚舉法(for in)
for (類型 *變量 in 數組)
4.block辦法遍歷
========= NSMutableArray可變數組 =============
1.考慮:為什麼需求有NSMutableArray
2.NSMutableArray的作用
3.如何創立一個NSMutableArray
1)創立空數組
<1>NSMutableArray *array = [[NSMutableArray alloc] init];
<2>array = [NSMutableArray array];
2)創立有對象的數組
《1》初始化只能有一個對象
NSMutableArray arrayWithObject:@"111"];
《2》初始化只能有多個對象
[NSMutableArray arrayWithObjects:@"1111",@"222",@"333",@"4444", nil];
[[NSMutableArray alloc] initWithObjects:<#(id), ...#>, nil];
4.可變數組添加元素
1)向可變數組外面添加元素(在最後添加)
[array addObject:元素];
2)如何向可變數組中拔出一個元素
/*
添加一個元素
*/
//在下標為0的地位添加333
[array insertObject:@"333" atIndex:0];
3)如何向可變數組中拔出多個元素
/*添加多個元素*/ //要添加的元素 NSArray *insertArray = @[@"444",@"555"]; //要添加的索引 NSIndexSet *indexSet = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(1, [insertArray count])]; /*留意:要添加元素數組的個數等於索引集合的個數,否則crash*/ [array insertObjects:insertArray atIndexes:indexSet];
5.依據數組下標取值
[array objectAtIndex:下標];
6、如何刪除元素
1)刪除指定索引的元素
[array removeObjectAtIndex:下標];
2) 刪除最後一個元素
[array removeLastObject];
3)依據指定對象來刪除元素
[array removeObject:對象];
4)刪除一切元素
[array removeAllObjects];
5)一次性刪除一切指定下標的元素
[array removeObjectsAtIndexes:索引集合];
6) 刪除指定范圍內的元素
[array removeObjectsInRange:<#(NSRange)#>];
6.交換元素
//依據下標交換元素 [array replaceObjectAtIndex:0 withObject:@"xiaoming"]; //依據下標集合交換元素(多個元素交換) [array replaceObjectsAtIndexes:<#(NSIndexSet *)#> withObjects:<#(NSArray *)#>]; //以後指定范圍的下標交換為指定數組中的元素 [array replaceObjectsInRange:<#(NSRange)#> withObjectsFromArray:<#(NSArray *)#>];
7.交流兩個元素
/*下標與下標停止交流*/
[array exchangeObjectAtIndex:交流的下標 withObjectAtIndex:交流的下標];
======== 數組排序 ============
8、數組排序
1)數組排序辦法
sortedArrayXXX函數
作用:經過前往值將排序後果通知用戶,{不會修正數組中的元素}
適用於不能修正的數組
sortUsingXXX函數
作用:直接對數組內的元素停止排序,{最後後果保管在要排序的數組中}
適用於可被修正的數組
2)運用block排序
什麼是block:相似於c言語中的函數指針
block的益處:可以訪問函數中的部分變量
!!!定義一個block語法!!!
block如何修正函數中的部分變量
__block關鍵字,是block語法特有的關鍵字 相當於將變質變成全局變量
其它闡明:
函數指針是指向函數的指針變量,即實質是一個指針變量。
int (*f) (int x); /* 聲明一個函數指針 */
f=func; /* 將func函數的首地址賦給指針f */
指向函數的指針包括了函數的地址,可以經過它來調用函數。聲明格式如下:
類型闡明符 (*函數名)(參數)
3) NSSortDescriptor初級排序
====== 其他 ==============
selector選擇器運用
1.SEL數據類型
1)什麼是
Objective-C在SEL編譯的時分,會依據辦法的名字(包括參數序列),
生成一個用 來區分這個辦法的獨一的一個ID,這個ID就是SEL類型的
還可以這樣了解:
SEL就是對辦法的一種包裝。包裝的SEL類型數據它對應相應的辦法地址,找到辦法地址就可以調用辦法。在內存中每個類的辦法都存儲在類對象中,每個辦法都有一個與之對應的SEL類型的數據,依據一個SEL數據就可以找到對應的辦法地址,進而調用辦法。
辦法的存儲地位:
2)作用:
從效率的角度下去說,執行的時分不是經過辦法名字而是辦法ID也就是一個整數來查找辦法,
由於整數的查找和婚配比字符串要快得多,所以這樣可以在某種水平上進步執行的效率
並且加強順序的靈敏性
3)運用辦法
經過@selector辦法獲取
SEL s1 = @selector(compare:);
經過NSSelectorFromString將一個字符串轉換為一個SEL類型
SEL s2 = NSSelectorFromString(@"compare:");
2.performSelector
1)作用:執行SEL
2)運用@selector排序
SEL 是oc特有的類型 compare: @selector(compare:)
一個辦法名對應一個編號
只需辦法名相反,那麼它的SEL值就相反
IOS會將辦法名(函數名)轉化為一個獨一編號 編號就是SEL類型
零碎經過辨認SEL 去尋覓對應的辦法名
@selector :辦法選擇器
@selector(xxx) xxx就是辦法名
【iOS開發-OC言語 (四)數組】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!