关闭

NSMutableArray常见用法

381人阅读 评论(0) 收藏 举报
分类:
#import <Foundation/Foundation.h>

@interface Person : NSObject
@end
@implementation Person
@end


int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
        /* 数组可以包括任意类型 */
        Person *p = [[Person alloc] init];
        NSMutableArray *arr1 = [[NSMutableArray alloc] initWithObjects: @"One String", @"Two", @"Three", p, nil];
        
        /* 数组中的每个对象实际是该对象的地址 */
        /* NSLOG打印时,调用的是对象的description方法,字符串返回本身,对象为多个C类型字符串则返回时包含双引号 */
        NSLog(@"arr1-%@", arr1);
        
        /* 利用已知数组初始化新数组 */
        NSMutableArray *arr2 = [[NSMutableArray alloc] initWithArray: arr1];
        /* 利用已知数组初始化时的地址浅拷贝 */
        NSMutableArray *arr3 = [[NSMutableArray alloc] initWithArray: arr1 copyItems: NO];
        
        /* 生成空的数组后追加 */
        NSMutableArray *arr4 = [[NSMutableArray alloc] init];
        [arr4 addObject:@"First String"];
        [arr4 addObject:@"Second"];
        
        /* 使用枚举器遍历数组 */
        NSEnumerator *enumarator = [arr2 objectEnumerator];
        id anObject;
        while (anObject = [enumarator nextObject]) {
            NSLog(@"arr2 object-%@", anObject);
        }
        
        /* 快速遍历法 */
        for (anObject in arr3)
        {
            NSLog(@"arr3 object--%@", anObject);
        }
        
        /* i遍历法 */
        NSInteger i = 0;
        for ( ; i < [arr4 count]; i++)
        {
            NSLog(@"arr4 object---%@", [arr4 objectAtIndex:i]);
        }
        
        /* 删除部分或全部元素 */
        [arr2 removeObject:@"Two"];
        NSLog(@"arr2 is %@", arr2);
        [arr2 removeAllObjects];
        NSLog(@"arr2 is %@", arr2);
        [arr4 removeObject:@"First String"];
        NSLog(@"arr4 is %@", arr4);
        
        /* 元素交换 */
        [arr3 exchangeObjectAtIndex:0 withObjectAtIndex: 2];
        NSLog(@"arr3 is %@", arr3);
        
        /* 注意M.a.c输出时以字符串形式 */
        NSString *str1 = @"This is my M.a.c book";
        NSArray *arr5 = [str1 componentsSeparatedByString: @" "];
        NSLog(@"arr5 is %@", arr5);
        
        /* 逆序 */
        NSMutableArray *arr6 = [[NSMutableArray alloc] init];
        NSEnumerator *enumra = [arr5 reverseObjectEnumerator];
        while (anObject = [enumra nextObject]) {
            [arr6 addObject: anObject];
        }
        NSLog(@"arr6 is %@", arr6);
        
        /* 拼接成字符串 */
        NSMutableString *str2 = [[NSMutableString alloc] init];
        id obj;
        for (obj in arr6)
        {
            [str2 appendFormat:@"%@ ", obj];
        }
        NSLog(@"str2 is %@", str2);
    }
    return 0;
}

输出结果:

2015-11-18 22:39:53.637 TestMutableArray[646:18692] arr1-(
    "One String",
    Two,
    Three,
    "<Person: 0x100206a00>"
)
2015-11-18 22:39:53.641 TestMutableArray[646:18692] arr2 object-One String
2015-11-18 22:39:53.641 TestMutableArray[646:18692] arr2 object-Two
2015-11-18 22:39:53.641 TestMutableArray[646:18692] arr2 object-Three
2015-11-18 22:39:53.641 TestMutableArray[646:18692] arr2 object-<Person: 0x100206a00>
2015-11-18 22:39:53.642 TestMutableArray[646:18692] arr3 object--One String
2015-11-18 22:39:53.642 TestMutableArray[646:18692] arr3 object--Two
2015-11-18 22:39:53.642 TestMutableArray[646:18692] arr3 object--Three
2015-11-18 22:39:53.642 TestMutableArray[646:18692] arr3 object--<Person: 0x100206a00>
2015-11-18 22:39:53.642 TestMutableArray[646:18692] arr4 object---First String
2015-11-18 22:39:53.642 TestMutableArray[646:18692] arr4 object---Second
2015-11-18 22:39:53.642 TestMutableArray[646:18692] arr2 is (
    "One String",
    Three,
    "<Person: 0x100206a00>"
)
2015-11-18 22:39:53.643 TestMutableArray[646:18692] arr2 is (
)
2015-11-18 22:39:53.643 TestMutableArray[646:18692] arr4 is (
    Second
)
2015-11-18 22:39:53.643 TestMutableArray[646:18692] arr3 is (
    Three,
    Two,
    "One String",
    "<Person: 0x100206a00>"
)
2015-11-18 22:39:53.643 TestMutableArray[646:18692] arr5 is (
    This,
    is,
    my,
    "M.a.c",
    book
)
2015-11-18 22:39:53.643 TestMutableArray[646:18692] arr6 is (
    book,
    "M.a.c",
    my,
    is,
    This
)
2015-11-18 22:39:53.644 TestMutableArray[646:18692] str2 is book M.a.c my is This 





0
0
查看评论

NSArray&NSMutableArray 高端用法

Cocoa的NSArray是基于C底层CFArray/CFArrayRef实现的,NSArray可以看做是一个CFArrayRef的Wrapper类。__NSArrayI(Immutable)是NSArray的真正类型,__NSArrayM(Mutable)是NSMutableArray的真正类型。...
  • jeffasd
  • jeffasd
  • 2015-10-14 17:33
  • 1986

[Objective-C]内存泄漏是新手必然要经历的痛,NSMutableArray的正确使用

Objective-C程序开发中的内存泄漏问题是新手非常头痛的事情,可能是用C#这类自动垃圾释放的语言太习惯了,用xcode中的profile工具查了一下我写的小程序,内存泄漏了一大堆,经过一阵子排查,在NSMutableArray中添加对象后不正确维护对象的引用计数是一个主要原
  • onlyou930
  • onlyou930
  • 2011-09-27 15:55
  • 4690

oc 知识总结二(NSArray、NSMutableArray)

注:1、数组:是一组有序的对象的集合,通过索引下标获取到数组中的各个元素。        2、数组中不可以存放基本数据类型,只能存放对象。如果需要将剧本数据类型放入数组中,需要通过NSNumber来放入。 一、不可变数组(NSArray) 1、创建NSArra...
  • sunshine_leaf
  • sunshine_leaf
  • 2015-12-28 17:32
  • 742

Objective-C中NSArray和NSMutableArray的基本用法

Objective-C中NSArray和NSMutableArray的基本用法
  • centralperk
  • centralperk
  • 2013-08-25 17:59
  • 38242

OC学习篇之---Foundation框架中的NSArray类和NSMutableArray类

在之前的一篇文章中介绍了Foundation框架中的NSString类和NSMutableString类:http://blog.csdn.net/jiangwei0910410003/article/details/41788223今天我们继续来看一下Foundation框架中的NSArray类和...
  • jiangwei0910410003
  • jiangwei0910410003
  • 2014-12-08 22:10
  • 18611

NSMutableArray (可变数组增、删、改、查)

//1.1 初始化 NSMutableArray *muArray = [NSMutableArray arrayWithObjects:@"123",@"345",@"2354", nil]; NSMutableArray...
  • Jason_chen13
  • Jason_chen13
  • 2015-12-08 17:58
  • 2190

OC NSArray 和 NSMutableArray 常用方法的使用和实例

#import NSInteger intSort(id num1, id num2, void *context); int main(int argc, const char * argv[]) {        //NS...
  • qq_30402119
  • qq_30402119
  • 2015-08-08 14:41
  • 674

NSMutableArray removeObject

删除数组中指定元素,removeObject 根据对象isEqual消息判断
  • yang2735
  • yang2735
  • 2014-03-19 17:34
  • 606

NSMutableArray用法

创建可变数组 NSMutableArray *array = [[NSMutableArray alloc] init];  [array addObject:@"One"];  [array addO...
  • Leeyehong_self
  • Leeyehong_self
  • 2013-09-18 23:17
  • 2997

NSArray/NSMutableArray创建,获取,遍历,排序 - iOS

1 数组基本1.1 创建数组NSArray 是不可变数组,一旦创建完成就不能够对数组进行,添加,删除等操作下面这种方式相当于什么都没做NSArray * array = [[NSArray alloc] init];NSLog(@"%@",array);1.2 通过构造方法的方式...
  • zyq522376829
  • zyq522376829
  • 2016-08-14 15:08
  • 4424
    个人资料
    • 访问:484586次
    • 积分:5111
    • 等级:
    • 排名:第6489名
    • 原创:87篇
    • 转载:2篇
    • 译文:0篇
    • 评论:393条
    博客专栏
    文章分类
    最新评论