zoukankan      html  css  js  c++  java
  • NSArray创建和使用

    //
    //  main.m
    //  NSArray
    //
    //  Created by dingxiaowei on 13-5-12.
    //  Copyright (c) 2013年 dingxiaowei. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    #import "Student.h"
    void arrayCreate(){
        //静态创建数组,a不需要我们管理内存
        NSArray *array=[NSArray array];
        array = [NSArray arrayWithObject:@"abc"];
        array=[NSArray arrayWithObjects:@"d",@"e",@"f",nil];
        NSLog(@"%@",array);
        NSLog(@"数组的元素个数:%zi",[array count]);
    }
    
    void arrayUse(){
        NSArray *obj=[[[NSArray alloc] init] autorelease];
        NSArray *array=[NSArray arrayWithObjects:@"a",@"b",@"c",obj,nil];
        if([array containsObject:@"a"]){
            NSLog(@"数组中包含了a元素");
        }
    
        NSLog(@"最后一个元素是:%@",[array lastObject]);
    
        NSLog(@"第2个元素是:%@",[array objectAtIndex:1]);
    
        NSLog(@"c元素的位置:%zi",[array indexOfObject:@"c"]+1);
    }
    #pragma mark - 数组的内存管理
    void arrayMemory(){
        Student *stu1=[[Student alloc] init];
        Student *stu2=[[Student alloc] init];
        Student *stu3=[[Student alloc] init];
        NSLog(@"stu1的计数器%i",[stu1 retainCount]);
        //注意:将一个OC对象塞给array之后,这个对象的计数器加1
        NSArray *array=[[NSArray alloc] initWithObjects:stu1,stu2,stu3,nil]; //注意:将一个OC对象塞给array之后,这个对象的计数器加1
        NSLog(@"stu1的计数器%i",[stu1 retainCount]);
        NSLog(@"元素个数:%zi",array.count);
    
        [stu1 release];
        [stu2 release];
        [stu3 release];
        [array release];
    }
    #pragma mark - 给数组里面的元素发送信息
    void arrayMessage(){
        Student *stu1=[Student student];
        Student *stu2=[Student student];
        Student *stu3=[Student student];
        NSArray * array=[NSArray arrayWithObjects:stu1,stu2,stu3, nil];//静态方法不需要我们管理内存
        //将array里面多有对象都调用一次test方法
        //[array makeObjectsPerformSelector:@selector(test)];
        [array makeObjectsPerformSelector:@selector(test:) withObject:@"123"];  //注意冒号也是方法名的一部分,这个顶多只支持传一个参数
    }
    
    #pragma mark - 遍历数组1(基本for循环遍历)
    void arrayFor1(){
        Student *stu1=[Student student];
        NSArray * array=[NSArray arrayWithObjects:@"1",@"2",@"3",stu1,nil];//任何OC对象都可以塞进数组中
        int count=array.count; //得到数组的元素个数
        for(int i=0;i<count;i++){ //返回id
            id obj=[array objectAtIndex:i];    //id=void *
            NSLog(@"%->%@",i,obj);
        }
    }
    #pragma mark - 遍历数组2(快速遍历)
    void arrayFor2(){
        Student *stu1=[Student student];
        NSArray * array=[NSArray arrayWithObjects:@"1",@"2",@"3",stu1,nil];//任何OC对象都可以塞进数组中
        //快速遍历
        int i=0;
        for(id obj in array){
            NSLog(@"%->%@",i,obj);
            i++;
        }
    }
    #pragma mark - 遍历数组3(用Block遍历)
    void arrayFor3(){
        Student *stu1=[Student student];
        NSArray * array=[NSArray arrayWithObjects:@"1",@"2",@"3",stu1,nil];//任何OC对象都可以塞进数组中
        //用Block遍历
        [array enumerateObjectsUsingBlok:^(id obj,NSUinter idx,BOOL *stop){
            NSLog(@"%i-%@",idx,obj);
            if(idx==2){
                //利用指针变量修改外面BOOL的值
                *stop=YES;//调用指针参数   改变外面的变量   终止循环
            }
        }];
        
    }
    #pragma mark - 遍历数组4(用迭代器遍历)
    void arrayFor4(){
        Student *stu1=[Student student];
        NSArray * array=[NSArray arrayWithObjects:@"1",@"2",@"3",stu1,nil];//任何OC对象都可以塞进数组中
        //用迭代器遍历数组
        //获取数组的迭代器
        NSEnumerator *enumerator=[array objectEnumerator];
    //    //取得下一个对象
    //    [enumerator nextObject];
        id obj=nil;
        if(obj=[enumerator nextObject]){
            NSLog(@"obj=%@",obj);
        }
    //    //返回迭代器中所有的元素
    //    [array allObjects];
        //注意:这个方法只能返回没由遍历过的,要使用这种方法返回所有的对象,就放在nextObject方法之前!!!
        NSArray * array2=[array allObjects];
        NSLog(@"array2:%@",array2);
    }
    int main(int argc, const char * argv[])
    {
    
        @autoreleasepool {
            
            arrayCreate();
            arrayUse();
            arrayMemory();
            arrayFor1();
            arrayFor2();
            arrayFor3();
            arrayFor4();
        }
        return 0;
    }
  • 相关阅读:
    2.2 Scala基础知识
    Linux---用户及权限管理类命令
    Linux---进程控制类命令
    Linux---vim编辑文本文件
    Linux---文件压缩与解压缩命令
    Linux---查找命令
    Linux---基本目录与文件命令
    nginx配置技巧汇总
    Go 内嵌静态资源
    go语言的time.Sleep
  • 原文地址:https://www.cnblogs.com/dingxiaowei/p/3076005.html
Copyright © 2011-2022 走看看