不可变数组NSArray和可变数组NSMutableArray区别和用法

下面是相关的代码实现:

#import <Foundation/Foundation.h>

#import "Person.h"

/*

NSArray :不可变数组

NSMutableArray : 可变数组

*/

int main()

{

// @[] 只创建不可变数组NSArray

/* 错误写法

NSMutableArray *array = @[@"jack", @"rose"];

[array addObject:@"jim"];

*/

//NSArray *array = @[@"jack", @"rose"];

return 0;

}

// 可变数组的基本使用

void use3()

{

NSMutableArray *array = [NSMutableArray arrayWithObjects:@"rose", @"jim", nil];

// 添加元素

[array addObject:[[Person alloc] init]];

[array addObject:@"jack"];

// 删除元素

//[array removeAllObjects];

// 删除指定的对象

// [array removeObject:@"jack"];

[array removeObjectAtIndex:0];

// 错误写法

// [array addObject:nil];

NSLog(@"%@", array);

NSLog(@"%ld", array.count);

}

// 遍历数组

void use2()

{

Person *p = [[Person alloc] init];

NSArray *array = @[p, @"rose", @"jack"];

//    for (int i = 0; i<array.count; i++)

//    {

//        NSLog(@"%@", array[i]);

//    }

// id obj代表着数组中的每一个元素

//int i = 0;

//    for (id obj in array)

//    {

//        // 找出obj元素在数组中的位置

//        NSUInteger i = [array indexOfObject:obj];

//

//        NSLog(@"%ld - %@", i, obj);

//        //i++;

//

//        if (i==1)

//        {

//            break;

//        }

//    }

[array enumerateObjectsUsingBlock:

// 每遍历到一个元素,就会调用一次block

// 并且当前元素和索引位置当做参数传给block

^(id obj, NSUInteger idx, BOOL *stop)

{

NSLog(@"%ld - %@", idx, obj);

if (idx == 0)

{

// 停止遍历

*stop = YES;

}

}];

//    void ^(myblock)(id, NSUInteger, BOOL *) = ^(id obj, NSUInteger idx, BOOL *stop)

//    {

//        NSLog(@"%ld - %@", idx, obj);

//

//

//        if (idx == 0)

//        {

//            // 停止遍历

//            *stop = YES;

//        }

//    };

//

//    for (int i = 0; i<array.count; i++)

//    {

//        // 用来标记是否需要停止遍历

//        BOOL isStop = NO;

//

//        // 取出元素

//        id obj = array[i];

//

//        myblock(obj, i, &isStop);

//

//

//        if (isStop)

//        {

//            break;

//        }

//    }

}

void use()

{

/*

int a = 5;

int ages[10] = {1, 90, 89, 17};

Person *p = [[Person alloc] init];

Person *persons[5] = {p,  [[Person alloc] init]};

*/

// OC数组不能存放nil值

// OC数组只能存放OC对象、不能存放非OC对象类型,比如int、struct、enum等

// 这个array永远是空数组

// NSArray *array = [NSArray array];

/*

1.NSArray的创建

*/

NSArray *array2 = [NSArray arrayWithObject:@"jack"];

// nil是数组元素结束的标记

NSArray *array3 = [NSArray arrayWithObjects:@"jack", @"rose", nil];

// [array2 count];

//NSArray *array4 = [NSArray arrayWithObjects:@"jack", @"rose", @"4324324", nil];

// 快速创建一个NSArray对象

NSArray *array4 = @[@"jack", @"rose", @"4324324"];

/*

2.NSArray的元素个数

*/

NSLog(@"%ld", array3.count);

/*

3.NSArray中元素的访问

*/

NSLog(@"%@", [array3 objectAtIndex:1]);

//array3[1];

NSLog(@"%@", array3[0]);

}

时间: 2024-07-30 03:00:07

不可变数组NSArray和可变数组NSMutableArray区别和用法的相关文章

【转】不可变数组NSArray与可变数组NSMutableArray

原文网址:http://www.jianshu.com/p/1ad327f56d1d 不可变数组NSArray //创建一个空数组 NSArray *array = [NSArray array]; //这样创建是没有意义的. //创建只有一个元素的数组 NSArray *array1 = [NSArray arrayWithArray:@"a"]; NSArray *array2 = [NSArray arrayWithObject:@"b"]; //使用便利构造

iOS objective-c之-8:数组NSArray 可变数组-(NSMutableArray)

镔哥自己了一些数组方法,网上又查了些方法出来,应该是比较全面的. 下面的例子以 NSArray *array = [NSArray arrayWithObjects:@"wendy",@"andy",@"tom",@"jonery",@"stany", nil]; 1.获取数组中总共有多少个对象. - (NSUInteger)count; NSLog(@"%d",[array count

NSString NSArray和可变字符串、数组的用法

// 使用实例方法创建NSString对象 NSString *string1 = [[NSStringalloc]initWithFormat:@"姓名流年"]; NSLog(@"%@", string1); NSString *string2 = [[NSStringalloc]initWithFormat:@"Ming"]; NSLog(@"%@", string2); NSString *string3 = [[NSS

Foundation框架—— 数组 (NSArray NSMutableArray )

基础知识回顾 1.在给可变数组添加元素时,要保证该数组已被初始化 2.在遍历可变数组时,不能对其进行增删改 3.NSMutableArray继承自NSArray,几乎拥有NSArray的一切方法. 4.OC数组只能存放OC对象,不能存放非OC对象,如int,结构体和枚举等. NSArray NSArray *arr=[NSArray array];//初始化一个空数组 NSArray *arr1=[NSArrayarrayWithObject:@"123"];//初始化一个元素的数组

oc-可变数组继承不可变数组

#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { //可变数组继承不可变数组 //1.创建  设定元素个数进行创建 NSMutableArray *mutArr=[NSMutableArray arrayWithCapacity:7]; //2.向数组中添加一个元素 NSArray *arr=@[@"MON",@"TUE&qu

可变数组继承不可变数组,添、删、改、查、替换

#define NSLog(FORMAT, ...) fprintf(stderr,"%s\n",[[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String]); #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { //可变数组继承不可变数组 //1.创建.设定元素个数进行创

可变数组继承不可变数组

#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { //可变数组继承不可变数组 //1.创建  设定元素个数进行创建 NSMutableArray *mutArr=[NSMutableArray arrayWithCapacity:7]; //2.向数组中添加一个元素 NSArray *[email protected][@"MON",@

Objective-C学习-数组 NSArray 和 NSMutableArray(欢迎提意见)

在学习 Objective-C的过程中,感觉数组在这一个学习方面是一个比较大的应用域,所以写这篇随笔来总结一下. 首先声明的是,与C语言的数组不同,Objective-C的是数组只能用来存储对象,而不是存储int .double.char等基础数据类型,一般要存这些基础数据类型,对于我这个刚学 Objective-C的新手来说,我的做法是将有关数字的基础类型 如 int .double.char首先转换成一个叫做 NSNumber的类  char*类型的转换成  Objective-C的字符串

Chapter5_初始化与清理_数组初始化与可变参数列表

一.数组初始化 数组是相同类型的,用一个标识符名称封装到一起的一个对象序列或基本类型数据序列.编译器是不允许指定数组的长度的,当使用语句int[] a时,拥有的只是一个符号名,即一个数组的引用,并不拥有这个数组的存储空间.要获取数组的存储空间,必须要写初始化表达式,最朴素的表达式类型如下 1 int[] a = {1,2,3}; 如果在编写程序时,不能确定数组的长度,可以使用如下方式,直接用new在数组里创建元素 1 int[] a = new int[3]; 当创建对象数组时,数组中的元素仅仅