美文网首页
iOS入门小知识-数组

iOS入门小知识-数组

作者: BiBiMan | 来源:发表于2021-11-16 21:26 被阅读0次

C数组主要用于存储基本数据类型 (int, char, float, double...),以及复合数据类型(int *, int[6]...)
OC数组是一个对象,主要用于存储“对象”,可以存储不同类型的对象,数组分不可变数组NSArray和可变数组NSMutableArray,数组中存储的其实是每个对象的地址,并不是真的存储对象,所以通常一个对象会被存储到多个数组中,但所存储的对象地址指向的都是同一个对象的内存空间,也就是同一个对象

//基础数据类型
char c = 'z';
char cc[] = "1";
int i = 10;
bool d = YES;
NSNumber *obj1 = [NSNumber numberWithChar:c];
NSString *obj2 = [NSString stringWithUTF8String:cc];
NSString *obj3 = [[NSString alloc] initWithBytes:&c length:sizeof(c) encoding:NSUTF8StringEncoding];
NSNumber *obj4 = [NSNumber numberWithInt:i];
NSNumber *obj5 =[NSNumber numberWithBool:d];
        
//任意类对象
NSObject *obj6 = [[NSObject alloc] init];
        
NSArray *array = @[obj1, obj2, obj3, obj4, obj5, obj6];
NSLog(@"%@\n",array);
~
打印日志:
(
122,
1,
z,
10,
1,
"<NSObject: 0x1038305f0>"
)

NSArray

NSArray *arr = [[NSArray alloc] init];
[NSArray arrayWithArray:arr];
[NSArray arrayWithObject:@""];
[NSArray arrayWithObjects:@"", nil];
NSString *objs[] = {@""};
[NSArray arrayWithObjects:objs count:1];
//字符串分割
NSString *originStr = @"current string,contain one#two and three,other four";
//以字符串分割
NSArray *separatArr = [originStr componentsSeparatedByString:@" "];
//以字符集合中的字符分割
NSCharacterSet *set = [NSCharacterSet characterSetWithCharactersInString:@", #"];
NSArray *setArr = [originStr componentsSeparatedByCharactersInSet:set];
NSLog(@"separatArr = %@\nsetArr = %@",separatArr,setArr);
~
打印日志:
separatArr = (
    current,
    "string,contain",
    "one#two",
    and,
    "three,other",
    four
)
setArr = (
    current,
    string,
    contain,
    one,
    two,
    and,
    three,
    other,
    four
)

NSMutableArray

NSMutableArray继承自NSArray,所以基本可以使用NSArray构造方法来创建NSMutableArray对象,不同的是NSMutableArray可以在原数组内进行元素的

NSMutableArray *arr = [NSMutableArray array];
[NSMutableArray arrayWithArray:arr];
[NSMutableArray arrayWithObject:@""];
[NSMutableArray arrayWithObjects:@"", nil];
NSString *objs[] = {@""};
[NSMutableArray arrayWithObjects:objs count:1];
NSMutableArray *arr = [NSMutableArray array];
//增
[arr insertObject:@"1" atIndex:0];
[arr addObject:@"2"];
[arr addObjectsFromArray:@[@"3",@"4"]];
//删
[arr removeObject:@"4"];
[arr removeLastObject];
//改
[arr exchangeObjectAtIndex:0 withObjectAtIndex:1];
[arr replaceObjectAtIndex:0 withObject:@"5"];
//查
[arr objectAtIndex:0];
[arr firstObject];
[arr lastObject];
//重置数组
[arr setArray:@[@"1",@"2",@"3",@"4"]];

深浅拷贝

Person *obj1 = [[Person alloc] init];
Person *obj2 = [[Person alloc] init];
//当把对象加入到数组里时候,对象的引用计数默认+1
NSArray *arr = [NSArray arrayWithObjects:obj1, obj2, nil];
//flag = NO时为浅拷贝,数组中的元素(对象)引用计数+1
NSArray *newArr1 = [[NSArray alloc] initWithArray:arr copyItems:NO];
//flag = YES时为深拷贝,数组中的元素(对象)生成副本
NSArray *newArr2 = [[NSArray alloc] initWithArray:arr copyItems:YES];
NSLog(@"arr = %@\nnewArr1 = %@\nnewArr2 = %@",arr,newArr1,newArr2);
~
打印日志:
arr = (
    "<Person: 0x100648710>",
    "<Person: 0x100646430>"
)
newArr1 = (
    "<Person: 0x100648710>",
    "<Person: 0x100646430>"
)
newArr2 = (
    "<Person: 0x100646600>",
    "<Person: 0x100646710>"
)

相关文章

  • iOS入门小知识-数组

    C数组主要用于存储基本数据类型 (int, char, float, double...),以及复合数据类型(i...

  • iOS--小知识点

    iOS--小知识点 一. 颜色渐变 三. 使用drowRect绘制简单图形 四. 可变数组与不可变数组之间的转换 ...

  • iOS入门小知识-类

    OC全称Objective-C(面向对象的C),是以C语言为基础的,并结合Smalltalk特征扩展出来的一种面向...

  • iOS入门小知识-NSValue

    NSValue NSValue是NSNumber的超父类,可以存储任何类型的数据,包括复合数据类型(数组,指针,结...

  • iOS入门小知识-NSNumber

    NSNumber NSNumber继承自NSValue,是一个用来包装的类,可以将基础数据类型包装成一个对象

  • iOS入门小知识-SEL

    SEL选择器 SEL选择器是一个变量类型,这个类型写作SEL。SEL的变量装载的是”成员方法”,更准确的说,装载的...

  • iOS入门小知识-分类

    分类 OC中特有的一种语法,Category,通常我们叫它分类、类别和类目。分类可以在不改变原来类的基础上,给类扩...

  • iOS入门小知识-协议

    id类型 在介绍协议之前,我们先来了解OC中一个特殊的类型,那就是id类型,它是一个万能指针,可以指向任何OC对象...

  • iOS入门小知识-拷贝

    深拷贝和浅拷贝 浅拷贝:只拷贝对象的地址,所拷贝出来的对象指针所指向的地址仍然是被拷贝对象的内存地址 深拷贝:真正...

  • iOS新手入门课外阅读

    ?知识库 iOS新手入门 iOS笔试题 iOS面试题 iOS开发知识整理合集 1年=小学 2年=初中 3年=高中 ...

网友评论

      本文标题:iOS入门小知识-数组

      本文链接:https://www.haomeiwen.com/subject/nbahtrtx.html