A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© mac 中级黑马   /  2015-9-23 10:14  /  769 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

//
//  main.m
//  FoundationFramework
//
//  Created by Kenshin Cui on 14-2-16.
//  Copyright (c) 2014年 Kenshin Cui. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Person.h"


void test1(){
    Person *person1=[Person personWithName:@"Kenshin"];
    Person *person2=[Person personWithName:@"Kaoru"];
    Person *person3=[Person personWithName:@"Rosa"];
    NSMutableArray *array1=[NSMutableArray arrayWithObjects:person1,person2,person3, nil];
    NSLog(@"%@",array1);
    /*结果:
     (
         "name=Kenshin",
         "name=Kaoru",
         "name=Rosa"
     )
     */
   
    Person *person4=[Person personWithName:@"Jack"];//此时person4的retainCount为1
    [array1 addObject:person4];//添加一个元素,此时person4的retainCount为2
    NSLog(@"%@",array1);
    /*结果:
     (
         "name=Kenshin",
         "name=Kaoru",
         "name=Rosa",
         "name=Jack"
     )
     */
   
    [array1 removeObject:person3];//删除一个元素
    NSLog(@"%@",array1);
    /*结果:
     (
         "name=Kenshin",
         "name=Kaoru",
         "name=Jack"
     )
     */
   
    [array1 removeLastObject];//删除最后一个元素,//此时person4的retainCount为1
    NSLog(@"%@",array1);
    /*结果:
     (
         "name=Kenshin",
         "name=Kaoru"
     )
     */
   
    [array1 removeAllObjects];//删除所以元素
   
    //注意当往数组中添加一个元素时会retain因此计数器+1,当从数组中移除一个元素时会release因此计数器-1
    //当NSMutalbeArray对象release的时候会依次调用每一个对象的release
}
void test2(){
    NSMutableArray *array1=[NSMutableArray arrayWithObjects:@"1",@"3",@"2", nil];
    NSLog(@"%@",array1);
    /*结果:
     (
         1,
         3,
         2
     )
     */
   
    NSArray *array2= [array1 sortedArrayUsingSelector:@selector(compare:)];//注意这个方法没有修改array1
    NSLog(@"%@",array1);
    /*结果:
     (
         1,
         3,
         2
     )
     */
   
    NSLog(@"%@",array2);
    /*结果:
     (
         1,
         2,
         3
     )
     */
    [array1 sortUsingSelector:@selector(compare:)];//这个方法会修改array1
    NSLog(@"%@",array1);
    /*结果:
     (
         1,
         2,
         3
     )
     */
   
}

int main(int argc, const char * argv[]) {
   
    test1();
   
    test2();
   
    return 0;
}

可变数组中的元素后面必须加nil以表示数据结束;
往一个可变数组中添加一个对象,此时这个对象的引用计数器会加1,当这个对象从可变数组中移除其引用计数器减1。同时当整个数组销毁之后会依次调用每个对象的releaes方法。
在不可变数组中无论对数组怎么排序,原来的数组顺序都不会改变,但是在可变数组中如果使用sortUsingSelector:排序原来的数组顺序就发生了变化。

2 个回复

倒序浏览
这个我还没看..Foundation感觉好难
回复 使用道具 举报
挺好的........加油
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马