首页 > 白话Objective-C > 白话Objective-C之NSMutableArray

白话Objective-C之NSMutableArray

NSArray与NSMutableArray之间的区别:

  • NSArray 创建的是静态数组,一旦创建之后,就再也不能添加和删除数组中的对象了。
  • NSMutalbeArray 创建的是动态数组,可随意添加或删除数组中的元素。
  • NSMutableArray继承于NSArray,可以使用NSArray的所有方法,另外还定义了更多的方法以适应mutable特性。

重要的方法:

Creating and Initializing a Mutable Array
+ arrayWithCapacity:
– initWithCapacity:

//这个数组容量Capacity仅仅是一个参考,不会真的限制数组的大小。 是为代码优化而设计的。
NSMutableArray *array = [NSMutableArray arrayWithCapacity: 17];

Adding Objects
– addObject:
– addObjectsFromArray:
– insertObject:atIndex:

Removing Objects
– removeAllObjects
– removeLastObject
– removeObject:
– removeObjectAtIndex:

Replacing Objects
– replaceObjectAtIndex:withObject:

Rearranging Content
– sortUsingDescriptors:
– sortUsingComparator:
– sortUsingSelector:

实例代码:

//
//  main.m
//  NSMutableArray
//
//  Created by sam on 13-8-19.
//  Copyright (c) 2013年 sam. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{

    @autoreleasepool {

        //create mutableArray
        NSMutableArray *mutableArray = [[NSMutableArray alloc]init];

        //add object: add four strings to mutableArray
        for (NSInteger i = 0; i < 4; i++) {
            NSString *string = [NSString stringWithFormat:@"I am string %lu",i];
            [mutableArray addObject:string];
        }

        /*delete object: 我们可以删除指定index的object,比如我们不喜欢第2个string,可以用下面的语句删除掉。
         现在mutableArray就只剩下三个string了,当我们删除一个object后,数组不会产生空缺的洞。删除的object后面的object会被移动到前面来填补空缺
         */
        [mutableArray removeObjectAtIndex:1];

        /*遍历数组,将打印出
        index 0 has I am string 0.
        index 1 has I am string 2.
        index 2 has I am string 3.
        */
        for (NSInteger i = 0; i < [mutableArray count]; i++) {
            NSLog (@"index %lu has %@.",i, [mutableArray objectAtIndex:i]);

        }

    }
    return 0;
}

参考资料:
https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSMutableArray_Class/Reference/Reference.html

(转载本站文章请注明出处 www.helloitworks.com ,请勿用于任何商业用途)

  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.