3. C数组和OC数组的区别
具有相同的数据类型的集合
int a[10] = {1,’x’,3,4,5};
不可变数组
NSArray
可变数组
NSMutableArray
OC的数组:任意类型对象地址的集合
3. 数组的创建和打印
alloc initWithObjects:
alloc initWithArray:
arrayWithArray:
arrayWithObject:
arrayWithObjects:
4. 数组元素个数 count
5. 通过指定索引获取元素 objectAtIndex: 获取元素的索引 indexOfObject:
6. 遍历数组 for (int i = 0; …)
7. 快速枚举遍历数组及注意问题 for (Student * student in studentArray) 不能修改数组中的对象
8. 数组中存放不同的对象
9. isKindOfClass:
10. 字符串分隔 componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString yes#I#am##a#man# 移除空字符串
11. 可变数组之add insert exchange replace remove removeAll removeObjectsFromArray removeObjectsInRange replaceObjectAtIndex:withObject:
12. 可变数组的创建 alloc init alloc initWithObjects: alloc initWithCapacity: arrayWIthArray: addByAddingObjectsFramArray:
13. 字符串分隔数组(数组中都是字符串对象) componentsJoinedByString:
14. 自已用算法实现排序
for (NSInteger i = 0; i < [stus count]-1; i++) {
for (NSInteger j = 0; j < [stus count]-1-i; j++) {
…
}
}
15. 类别
马 鸟
飞马 马(加个翅膀)
让马具有飞的功能,它就是飞马
我们要做的就是让马具有飞的功能
类别主要有3个作用:
(1)为现有的类添加新方法;(升级补丁)—》重要
(2)将类的实现分散到多个不同文件或多个不同框架中。
(3)通过替换现有类中的方法,修正现有类(没有源码文件的情况下)的功能或错误(尽量少用)
作业
— 1 —. 有两个字符串@"I am a good girl";@"You are a bad boy"; 将这两个字符串单词,交叠,形成系的字符串 @"I You am are a a good bad girl boy"
— 2 —.
给NSString 添加一个函数,返回这个字符串正中间的字符。
如@"12345", 返回‘3’,
如@"1234", 返回 ‘2’
— 3 —. 字符串逆序 @"12345"--->返回@"54321"
— 4. 给NSMutableString添加扩展 逆序字符串 @"12345” —> @“54321"
— 5 — 给可变数组添加一个 元素逆序 的 消息
- 6 - 给可变数组添加一个向左移动和向右移动的方法,比如:[1 2 3 4] 向右移动变为:[4 1 2 3] 再向右移动变为:[3 4 1 2] ,再向左移动变为:[4 1 2 3]
NSArray
*******************************************************************************/
/*---------------------------创建数组------------------------------*/
NSArray *array = [[NSArray alloc]
initWithObjects:@"One",@"Two",@"Three",@"Four",nil];
NSArray * array1 = [[NSArray alloc]initWithArray:array];NSArray * array2 = [NSArray
arrayWithArray:array];NSArray *array3 = [[NSArray
arrayWithObjects:@"One",@"Two",@"Three",@"Four",nil];
[array release];[array1 release];
//- (NSUInteger)
Count;数组所包含对象(元素)个数;NSLog(@"count:%d",[array
count]);
//- (id) objectAtIndex: (NSUInteger)
index;获取指定索引处的对象(元素);NSLog(@"object
:%@",[array objectAtIndex:2]);
/*查找:根据元素找到对应的索引*/
NSArray*array=[[NSArrayalloc]initWithObjects:@"one",@"two",@"three",@"one", nil];
//返回找到的第一个的索引,
一切操作不要越界
NSUInteger index = [array indexOfObject:@"one"];
//在指定范围内查找
index = [array indexOfObject:@"one" inRange:NSMakeRange(1, 3)];if (index != NSNotFound) {//找不到返回
NSNotFound
NSLog(@"index = %ld",index);}
/*数组的抽取*/
NSArray * array1 = [array objectsAtIndexes:[NSIndexSet
indexSetWithIndexesInRange:NSMakeRange(1, 3)]];
//NSIndexSet
数字集合类
//[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(1, 3)];创建一个数字集合对象//该集合成员是数字
1,2,3;
/*枚举器*/
//创建一个正序枚举器
NSEnumerator * enume1 = [array objectEnumerator];//枚举器是读数据的
while (obj = [enume1 nextObject]) {NSLog(@"%@",obj);
}
//快速枚举(正序)
NSArray *array = [NSArray arrayWithObjects: @"a",@"b",@"c",@"d",nil];
for(id obj in array){
NSLog(@"obj:%@",obj);
}
//创建一个逆序枚举器
NSEnumerator * enume2 = [array reverseObjectEnumerator];while (obj = [enume2 nextObject]) {
NSLog(@"obj = %@",obj);}
/*---------------------------字符串分割到数组------------------------------*/
NSString * str = @" Yes,I am a good man ";
//以字符串整体作为分割条件
NSArray * array = [str
componentsSeparatedByString:@" "];//以@”
” 作为分割条件
NSArray*array1 = [str
componentsSeparatedByCharactersInSet:[NSCharacterSetcharacterSetWithCharactersInString:@"
,"]];//以字符作为分割条件//NSCharacterSet
字符集合
//[NSCharacterSet
characterSetWithCharactersInString:@" ,"];把字符串@"
,"转化为一个字符集合
//这个集合的成员就是字符'
'和字符',';
//返回值 是
NSArray
不要写成
NSMuatbaleArray
/*---------------------------数组元素拼接成字符串------------------------------*/
NSString * ptr = [array
componentsJoinedByString:@"###"];//把数组元素拼接成字符串
NSLog(@”ptr = %@”,ptr);
/******************************************************************************NSMutableArray
*******************************************************************************/
/*创建一个可变数组(继承于 NSArray)*/
NSMutableArray *array = [[NSMutableArray alloc]
initWithObjects:@"One",@"Two",@"Three",@"Four",nil];
NSMutableArray * array1 = [[NSMutableArray alloc]initWithArray:array];NSMutableArray
* array2 = [NSMutableArray arrayWithArray:array];NSMutableArray *array3 = [[NSMutableArray
arrayWithObjects:@"One",@"Two",@"Three",@"Four",nil];
[array release];[array1 release];
//把不可变转化为一个新的可变数组
NSArray *array = [NSArray arrayWithObjects: @"a",@"b",@"c",@"d",nil];NSMutableArray * array1 = [NSMutableArray arrayWithArray:array];
//增
add (insert)
[array addObject:@"four"];//在最后增加
[array insertObject:@"iOS" atIndex:1];//在指定索引插入一个元素
//删除(remove)
[array removeObjectAtIndex:1];//根据索引删除元素
[array removeObject:@"one"];//删除数组元素:有几个删几个
[array removeObject:@"one" inRange:NSMakeRange(0, 2)];
//在指定范围内删除
//替换(replace):修改
[array replaceObjectAtIndex:0
withObject:@"qianfeng"];
//交换(exchange)
[array exchangeObjectAtIndex:1 withObjectAtIndex:2];
/*可变数组排序*/
//创建一个空的可变数组
//(首先设计一个
Dog
类)
NSMutableArray * array = [[NSMutableArray alloc]init];while (i++ < 5) {
Dog * dog = [[Dog alloc]initWithAge:arc4random()%10];[array addObject:dog];
}
[array sortUsingSelector:@selector(youngThanAge:)];
//sortUsingSelector
这是一个排序方法;已经实现了,//但是需要我们提供一个准则(就是一个函数)这个准则是(升序)左边
大于右边 进行交换 或者是(降序)左边小于右边进行交换//数组的元素是哪个类?那么这个准则就写在哪个类中
//这就是一个准则 左边 大于 右边 进行交换
//升序
-(BOOL)olderThanAge:(Dog *)_dog
{
return [self age] > [_dog age];
}
本文深入讲解了Objective-C中数组的概念,包括C数组与OC数组的区别、数组的创建、使用及操作方法,例如添加、删除、排序等,并提供了实用的代码示例。
752

被折叠的 条评论
为什么被折叠?



