关于NSArray的方法知识简单了解

简单分享下,希望大牛们多多指点迷津,逐步修改,完善不足支持。借鉴之处,还请谅解

 

#import <Foundation/Foundation.h>

@interface Student : NSObject

@property (nonatomic,assign) NSString *name;

@property (nonatomic,assign) NSString *classes;

@property (nonatomic,assign) int age;

+(id)studentWithName:(NSString *)name andAge:(int)age;   //类方法(工厂方法)

-(void)test;

-(void)test2:(id)obj;

 

#import "Student.h"

 

@implementation Student

 

+(id)studentWithName:(NSString *)name andAge:(int)age{

    Student *stu=[Student new];

    stu.name=name;

    stu.age=age;

    return stu;

}

 #import "Student.h"

 

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

    @autoreleasepool {

#pragma mark NSArray创建

        NSArray *array=[NSArray array];        //创建一个空数组

        array=[NSArray arrayWithObject:@"123"];//创建有1个元素的数组

        array=[NSArray arrayWithObjects:@"a",@"b",@"c", nil];//创建有3个元素的数组

        array=@[@"a",@"b",@"c"];                     //OC新语法创建数组

        NSString *obj0= array[0];                    //OC中对应下标的元素array[]

        

        int count=array.count;      //查询数组元素个数

        

#pragma mark NSArray常用方法

        BOOL result=[array containsObject:@"a"];   //判断是否包含某个元素

        NSString *last=[array lastObject];      //获取最后一个元素

        last=[array objectAtIndex:1];    //查找 索引1 的元素  =b

        int index=[array indexOfObject:@"c"];      //元素的 索引是2

        

#pragma mark NSArray遍历

        for(id obj in array){                      //《for in 快速遍历》(直接遍历数组)

            NSLog(@"%@",obj);

        }                          // id=void * 任何OC对象

        

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

            id obj=[array objectAtIndex:i];        //《for循环遍历》 (通过索引遍历数组)

            NSLog(@"%@",obj);

        }

        

        [array enumerateObjectsUsingBlock:^(id  obj, NSUInteger idx, BOOL * stop) {

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

            if(idx==2){

                *stop=YES;          //如果索引idx为2,就停止遍历。利用指针修改外面的BOOL变量值

            }

        }];                                           //《Block遍历》

        

        NSEnumerator *enumer=[array objectEnumerator];

        //NSEnumerator *enumer=[array reverseObjectEnumerator]; //反序遍历迭代器

        NSArray *array2=[enumer allObjects];   //获取没有被遍历过的所有对象

        id obj=nil;

        while (obj=[enumer nextObject]) {       //获取下一个需要遍历的元素

            NSLog(@"%@",obj);

        }                                             //《迭代器遍历》

        

#pragma mark NSArray内存管理

        //创建一个类,alloc初始化对象,(计数器:1),放到数组(alloc)中:元素(计数器:2)

        //当数组销毁时,对所有元素作一次release操作。最后要对对象再次释放一次release

        

#pragma mark 给NSArray的元素发送消息(调用方法)

        //创建一个类,创建方法,初始化对象,放到数组中

        [array makeObjectsPerformSelector:@selector(test)];//让数组中所有对象调用test方法

        [array makeObjectsPerformSelector:@selector(test1:) withObject:@"123"];

        //test1:方法带一个参数,调用test1:方法并传入一个参数

        

#pragma mark 派生新数组

        NSArray *array3=[array arrayByAddingObject:@"d"];

        NSArray *array4=[array arrayByAddingObjectsFromArray:array3];

        NSRange range=NSMakeRange(2, 2);

        NSArray *array5=[array subarrayWithRange:range];  //截取指定范围 派生新数组

        

        NSString *str=[array componentsJoinedByString:@","];//用,将各数组元素拼接成字符串

        

        NSString *path=@"/Users/administrator/Desktop/test.xml";

        [array writeToFile:path atomically:YES];       //将一个数组写入文件(一个xml文件)

        

        path=@"/Users/administrator/Desktop/test.txt";

        NSArray *array6=[NSArray arrayWithContentsOfFile:path]; //从文件中读取数组内容(文件有严格要求)

        

#pragma mark  NSArray排序

        NSArray *array7=[array sortedArrayUsingSelector:@selector(compare:)];

        //返回一个排好序的数组,原数组不变。  指定元素的比较方法 compare:

        [array7 sortedArrayUsingComparator:^NSComparisonResult(Student* obj1, Student* obj2) {

            NSComparisonResult result=[ obj1.name compare:obj2.name];

            if (result==NSOrderedSame) {

                result = [ obj1.classes compare: obj2.classes];

            }

            return result;

        }];    //利用block进行排序

        

#pragma mark NSMutableArray创建

        NSMutableArray *marray=[NSMutableArray arrayWithObjects:@"a",@"b",@"c",nil ];

        [marray addObject:@"d"];     //添加元素

//        [marray removeObject:@"c"];  //删除元素

//        [marray removeLastObject];

//        [marray removeAllObjects];

        

        NSMutableArray *mar=[NSMutableArray array];

        Student *stu1=[Student studentWithName:@"张三" andAge:18];

        Student *stu2=[Student studentWithName:@"李四" andAge:17];

        [mar addObject:stu1];      //对元素作一次retain   [stu1 retainCount:返回stu1的计数器值

        [mar removeObject:stu1];   //对元素作一次release

        

        [mar replaceObjectAtIndex:1 withObject:@"g"];  //替换索引1的元素为:g

        

        [mar sortUsingSelector:@selector(compare:)];    //对当前数组排序:mar

     

posted @ 2016-05-22 09:14  Miracle_H  阅读(186)  评论(0编辑  收藏  举报