NSMutableArray

Student.h:

#import <Foundation/Foundation.h>

@interface Student : NSObject
@property(nonatomic,assign) int age;
+(id)studentWithAge:(int)age;
@end

Student.m:

#import "Student.h"

@implementation Student
+(id)studentWithAge:(int)age{
    Student *stu=[[[Student alloc] init] autorelease];
    stu.age=age;
    return stu;
}
-(void)dealloc{
    NSLog(@"Age=%i对象被释放",_age);
    [super dealloc];
}
@end

main:

#import <Foundation/Foundation.h>
#import "Student.h"
void arrayCreate(){
    NSMutableArray *array=[NSMutableArray arrayWithObject:@"1"];
    //添加成员
    [array addObject:@"2"];
    [array addObject:@"3"];
    //删除成员
    [array removeObject:@"2"];
    [array removeLastObject];
    [array removeAllObjects];

    NSLog(@"动态数组是:%@",array);
}
#pragma mark - 数组内存的管理
void arrayMemory(){
    NSMutableArray * array=[NSMutableArray array];
    Student *stu1=[Student studentWithAge:16];
    Student *stu2=[Student studentWithAge:22];
    //注意:array进行添加元素的时候,会对被添加的元素执行一次retain操作,计数器加1
    [array addObject:stu1];//注意:执行这句话之后,首先先对stu1进行一次retain操作,计数器加1
    [array addObject:stu2];
    NSLog(@"addStu->计数器%i",[stu1 retainCount]);
    //注意:array进行删除元素的时候,会对被删除的元素执行一次release操作,计数器减1
    [array removeObject:stu1];//执行这句之后,stu1进行一次release操作,计数器减1
    NSLog(@"removeStu->计数器%i",[stu1 retainCount]);
    //注意:当数组被释放的时候,会对有所由成员进行一次release操作
}
#pragma mark - 替换元素
void arrayReplase(){
    NSMutableArray *array=[NSMutableArray arrayWithObjects:@"1",@"2",@"3",@"4",nil];  //只能塞OC对象
    //替换元素
    [array replaceObjectAtIndex:1 withObject:@"8"];
    Student *stu1=[Student studentWithAge:16];
    [array replaceObjectAtIndex:2 withObject:stu1];//随便塞对象,可以替换一个stu对象
    NSLog(@"array:%@",array);
}
#pragma mark - 排序
void arraySort(){
    NSMutableArray *array=[NSMutableArray arrayWithObjects:@"1",@"4",@"3",@"2",nil];  //只能塞OC对象
    NSLog(@"排序前:%@",array);
    [array sortUsingSelector:@selector(compare:)];
    NSLog(@"排序后:%@",array);

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

    @autoreleasepool {

        /*arrayCreate();
        arrayMemory();
        arrayReplase();*/
        arraySort();
    }
    return 0;
}

结果:

2013-08-02 15:32:46.883 NSMutableArray[1179:303] 排序前:(

    1,

    4,

    3,

    2

)

2013-08-02 15:32:46.885 NSMutableArray[1179:303] 排序后:(

    1,

    2,

    3,

    4

)

时间: 2024-08-03 08:04:59

NSMutableArray的相关文章

[iphone] NSDictionary / NSMutableDictionary 及 NSArray / NSmutableArray (实例)

NSDictionary 和 NSArray一样是不可变的对象.用来实现字典集合,在给定关键字(通常是一个NSString字符串)下存储一个数值(可以是任何类型的对象).  NSDictionary使用类方法 dictionaryWithObjectAndKeys: 来创建字典:使用方法objectForKey: 来获取字典中的值.  Java代码   NSDictionary *dict = [NSDictionary dictionaryWithObjectAndKeys:@"just&qu

objective c-objectiveC中创建NSMutableArray

问题描述 objectiveC中创建NSMutableArray 有一个NSArray给出下面的数据: 01/14/2013 13:28:06.559 IUser Reader [71164: c07] ( { "id_acompanhante" = ""; "id_evento" = 34; "user_id" = 1; "inserido_por" = "Himself"; name

NSArry 为静态数组,不能往里面添加元素 NSMutableArray 为动态数组,是NSArray 的子类

NSArry 为静态数组,不能往里面添加元素 NSMutableArray 为动态数组,是NSArray 的子类 定义一个数组 NSarray *city = [[NSArray arrayWithObjects:@"beijing",@"shanghai",@"heibei",nil]; 必须以nil结束.   方法: - (undesigned) count  //元素个数 - (id) objectAtIndex: (indesigned)

iOS 中由数组 NSArray 与 NSMutableArray 的使用理解偏差引发的多宗血案

iOS 中由数组 NSArray 与 NSMutableArray 的使用理解偏差引发的多宗血案 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 这个简单问题,一直以来,五年苹果开发经验告诉我,

objective c-添加NSMutableArray到另一个NSMutableArray中时数组值

问题描述 添加NSMutableArray到另一个NSMutableArray中时数组值 NSMutableArray *no1=[[NSMutableArray alloc]init]; NSMutableArray *no2=[[NSMutableArray alloc]init]; for(int i=0;i<3;i++) { for (int j=0;j<=i;j++) { NSString *no_str=[NSString stringWithFormat:@""

objc写一个NSMutableArray不连续索引替换对象的方法

NSMutableArray内置的方法-(void)replaceObjectsAtIndexes:(NSIndexSet*)set withObjects:(NSArray*)objs 只能替换一段连续索引内的对象,比如2 to 10之间的对象,如果我想要替换1,3,5索引位置的对象需要自己写代码. 在ruby中对于数组对象有一个values_at方法可以取得不连续索引的对象: 2.2.1 :048 > ary = %w[a b c d e f g] => ["a", &

ios-iOS NSMutableArray问题

问题描述 iOS NSMutableArray问题 需要填充一个数组的UITableview,其中包含文件. //in my header@property (strong nonatomic) NSMutableArray *files;//in my tableView:cellForRow:atIndexPath:static NSString *cellid = @""Cell"";UITableViewCell *cell = [tableView deq

ios-排序/过滤一个NSArray / NSMutableArray

问题描述 排序/过滤一个NSArray / NSMutableArray 如果定义了一个类: MyClass ------- NSString *name 然后放到数组里(或者可变数组),然后通过name条件筛选数组: [NSPredicate predicateWithFormat:@"name = %@", someValue]; 或者升序排序数组: [NSSortDescriptor sortDescriptorWithKey:@"name" ascendin

NSArray,NSMutableArray的KVO操作

KVO(Key Value Observe),键值观察,一种典型的观察者模式.iOS另一个观察者模式Notification,不过这个要在消息中心注册,相比而言比较麻烦. 建立KVO的三个步骤: 1.注册要监控的对象属性addObserver:forKeyPath:options:context: 2.observeValueForKeyPath:ofObject:change:context:,当观察的属性变化时会调用该方法 3.取消注册观察removeObserver:forKeyPath:

ios-既然有NSMutableArray 为啥还要NSArray?

问题描述 既然有NSMutableArray 为啥还要NSArray? 也可以这样问 就是最初设计NSArray为不可变的目的是什么? 解决方案 提一个很简单的例子,一个类对外开放一个存储某种数据的array(可以说是property声明在.h文件中),外面可以通过读取这个array与该类达到交流的目的, 如果此array可变,则外面就可以修改此array的内容,毫无安全性可言. 这仅仅是一种情况的其中一个例子,开发中处处可以发现.NSArray规范和NSMutableArray方便都是缺一不可