//
// 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:排序原来的数组顺序就发生了变化。 |
|