html5中文学习网

您的位置: 首页 > ios » 正文

ios中NSArray,NSSet,NSDictionary总结_IOS开发

[ ] 已经帮助:人解决问题

  三种集合类来收集cocoa对象(NSObject对象):BgDHTML5中文学习网 - HTML5先行者学习网

  NSArray 用于对象有序集合(相当于是数组)BgDHTML5中文学习网 - HTML5先行者学习网

  NSSet 用于对象无序集合BgDHTML5中文学习网 - HTML5先行者学习网

  NSDictionary用于键值映射BgDHTML5中文学习网 - HTML5先行者学习网

  以上三种集合类是不可变的(一旦初始化后,就不能改变)BgDHTML5中文学习网 - HTML5先行者学习网

  以下是对应的三种可变集合类(这三种可变集合类是对应上面三种集合类的子类):BgDHTML5中文学习网 - HTML5先行者学习网

  NSMutableArrayBgDHTML5中文学习网 - HTML5先行者学习网

  NSMutableSetBgDHTML5中文学习网 - HTML5先行者学习网

  NSMutableDictionaryBgDHTML5中文学习网 - HTML5先行者学习网

  注:这些集合类只能收集cocoa对象(NSOjbect对象),如果想保存一些原始的C数据(例如,int, float, double, BOOL等),则需要将这些原始的C数据封装成NSNumber类型的,NSNumber对象是cocoa对象,可以被保存在集合类中。BgDHTML5中文学习网 - HTML5先行者学习网

  NSArrayBgDHTML5中文学习网 - HTML5先行者学习网

  Ordered collection of objects. Immutable. You cannot add or remove objects to it once it’s created.BgDHTML5中文学习网 - HTML5先行者学习网

  Important methods:BgDHTML5中文学习网 - HTML5先行者学习网

  + (id)arrayWithObjects:(id)firstObject, ...; // nil terminatedBgDHTML5中文学习网 - HTML5先行者学习网

  - (int)count;BgDHTML5中文学习网 - HTML5先行者学习网

  - (id)objectAtIndex:(int)index; // NSString *s1=[[myarray objectAtIndex: 0];BgDHTML5中文学习网 - HTML5先行者学习网

  - (void)makeObjectsPerformSelector:(SEL)aSelector;BgDHTML5中文学习网 - HTML5先行者学习网

  - (NSArray *)sortedArrayUsingSelector:(SEL)aSelector;BgDHTML5中文学习网 - HTML5先行者学习网

  - (id)lastObject; // returns nil if there are no objects in the array (convenient)BgDHTML5中文学习网 - HTML5先行者学习网

  注:BgDHTML5中文学习网 - HTML5先行者学习网

  类方法arrayWithObjects 可以创建an autoreleased NSArray of the items.例如BgDHTML5中文学习网 - HTML5先行者学习网

  @implementation MyObjectBgDHTML5中文学习网 - HTML5先行者学习网

  - (NSArray *)coolCats {BgDHTML5中文学习网 - HTML5先行者学习网

  return [NSArray arrayWithObjects:@“Steve”, @“Ankush”, @“Sean”, nil];BgDHTML5中文学习网 - HTML5先行者学习网

  }BgDHTML5中文学习网 - HTML5先行者学习网

  @endBgDHTML5中文学习网 - HTML5先行者学习网

  Other convenient create with methods (all return autoreleased objects):BgDHTML5中文学习网 - HTML5先行者学习网

  [NSString stringWithFormat:@“Meaning of %@ is %d”, @“life”, 42];BgDHTML5中文学习网 - HTML5先行者学习网

  [NSDictionary dictionaryWithObjectsAndKeys:ankush, @“TA”, janestudent, @“Student”, nil];BgDHTML5中文学习网 - HTML5先行者学习网

  [NSArray arrayWithContentsOfFile:(NSString *)path];BgDHTML5中文学习网 - HTML5先行者学习网

  -----创建数组 -----BgDHTML5中文学习网 - HTML5先行者学习网

  //NSArray *array = [[NSArray alloc] initWithObjects:BgDHTML5中文学习网 - HTML5先行者学习网

  @"One",@"Two",@"Three",@"Four",nil];BgDHTML5中文学习网 - HTML5先行者学习网

  self.dataArray = array;BgDHTML5中文学习网 - HTML5先行者学习网

  [array release];BgDHTML5中文学习网 - HTML5先行者学习网

  //- (unsigned) Count;数组所包含对象个数;BgDHTML5中文学习网 - HTML5先行者学习网

  NSLog(@"self.dataArray cound:%d",[self.dataArray count]);BgDHTML5中文学习网 - HTML5先行者学习网

  //- (id) objectAtIndex: (unsigned int) index;获取指定索引处的对象;BgDHTML5中文学习网 - HTML5先行者学习网

  NSLog(@"self.dataArray cound 2:%@",[self.dataArray objectAtIndex:2]);BgDHTML5中文学习网 - HTML5先行者学习网

  ------ 从一个数组拷贝数据到另一数组(可变数级) -------BgDHTML5中文学习网 - HTML5先行者学习网

  //arrayWithArray:BgDHTML5中文学习网 - HTML5先行者学习网

  //NSArray *array1 = [[NSArray alloc] init];BgDHTML5中文学习网 - HTML5先行者学习网

  NSMutableArray *MutableArray = [[NSMutableArray alloc] init];BgDHTML5中文学习网 - HTML5先行者学习网

  NSArray *array = [NSArray arrayWithObjects:BgDHTML5中文学习网 - HTML5先行者学习网

  @"a",@"b",@"c",nil];BgDHTML5中文学习网 - HTML5先行者学习网

  NSLog(@"array:%@",array);BgDHTML5中文学习网 - HTML5先行者学习网

  MutableArray = [NSMutableArray arrayWithArray:array];BgDHTML5中文学习网 - HTML5先行者学习网

  NSLog(@"MutableArray:%@",MutableArray);BgDHTML5中文学习网 - HTML5先行者学习网

  array1 = [NSArray arrayWithArray:array];BgDHTML5中文学习网 - HTML5先行者学习网

  NSLog(@"array1:%@",array1);BgDHTML5中文学习网 - HTML5先行者学习网

  //CopyBgDHTML5中文学习网 - HTML5先行者学习网

  //id obj;BgDHTML5中文学习网 - HTML5先行者学习网

  NSMutableArray *newArray = [[NSMutableArray alloc] init];BgDHTML5中文学习网 - HTML5先行者学习网

  NSArray *oldArray = [NSArray arrayWithObjects:BgDHTML5中文学习网 - HTML5先行者学习网

  @"a",@"b",@"c",@"d",@"e",@"f",@"g",@"h",nil];BgDHTML5中文学习网 - HTML5先行者学习网

  NSLog(@"oldArray:%@",oldArray);BgDHTML5中文学习网 - HTML5先行者学习网

  for(int i = 0; i < [oldArray count]; i++)BgDHTML5中文学习网 - HTML5先行者学习网

  {BgDHTML5中文学习网 - HTML5先行者学习网

  obj = [[oldArray objectAtIndex:i] copy];BgDHTML5中文学习网 - HTML5先行者学习网

  [newArray addObject: obj];BgDHTML5中文学习网 - HTML5先行者学习网

  }BgDHTML5中文学习网 - HTML5先行者学习网

  //BgDHTML5中文学习网 - HTML5先行者学习网

  NSLog(@"newArray:%@", newArray);BgDHTML5中文学习网 - HTML5先行者学习网

  [newArray release];BgDHTML5中文学习网 - HTML5先行者学习网

  //快速枚举BgDHTML5中文学习网 - HTML5先行者学习网

  //NSMutableArray *newArray = [[NSMutableArray alloc] init];BgDHTML5中文学习网 - HTML5先行者学习网

  NSArray *oldArray = [NSArray arrayWithObjects:BgDHTML5中文学习网 - HTML5先行者学习网

  @"a",@"b",@"c",@"d",@"e",@"f",@"g",@"h",nil];BgDHTML5中文学习网 - HTML5先行者学习网

  NSLog(@"oldArray:%@",oldArray);BgDHTML5中文学习网 - HTML5先行者学习网

  for(id obj in oldArray)BgDHTML5中文学习网 - HTML5先行者学习网

  {BgDHTML5中文学习网 - HTML5先行者学习网

  [newArray addObject: obj];BgDHTML5中文学习网 - HTML5先行者学习网

  }BgDHTML5中文学习网 - HTML5先行者学习网

  //BgDHTML5中文学习网 - HTML5先行者学习网

  NSLog(@"newArray:%@", newArray);BgDHTML5中文学习网 - HTML5先行者学习网

  [newArray release];BgDHTML5中文学习网 - HTML5先行者学习网

  //Deep copyBgDHTML5中文学习网 - HTML5先行者学习网

  //NSMutableArray *newArray = [[NSMutableArray alloc] init];BgDHTML5中文学习网 - HTML5先行者学习网

  NSArray *oldArray = [NSArray arrayWithObjects:BgDHTML5中文学习网 - HTML5先行者学习网

  @"a",@"b",@"c",@"d",@"e",@"f",@"g",@"h",nil];BgDHTML5中文学习网 - HTML5先行者学习网

  NSLog(@"oldArray:%@",oldArray);BgDHTML5中文学习网 - HTML5先行者学习网

  newArray = (NSMutableArray*)CFPropertyListCreateDeepCopy(kCFAllocatorDefault, (CFPropertyListRef)oldArray, kCFPropertyListMutableContainers);BgDHTML5中文学习网 - HTML5先行者学习网

  NSLog(@"newArray:%@", newArray);BgDHTML5中文学习网 - HTML5先行者学习网

  [newArray release];BgDHTML5中文学习网 - HTML5先行者学习网

  //Copy and sortBgDHTML5中文学习网 - HTML5先行者学习网

  //NSMutableArray *newArray = [[NSMutableArray alloc] init];BgDHTML5中文学习网 - HTML5先行者学习网

  NSArray *oldArray = [NSArray arrayWithObjects:BgDHTML5中文学习网 - HTML5先行者学习网

  NSMutableArrayBgDHTML5中文学习网 - HTML5先行者学习网

  Mutable version of NSArray.BgDHTML5中文学习网 - HTML5先行者学习网

  - (void)addObject:(id)anObject;BgDHTML5中文学习网 - HTML5先行者学习网

  - (void)insertObject:(id)anObject atIndex:(int)index;BgDHTML5中文学习网 - HTML5先行者学习网

  - (void)removeObjectAtIndex:(int)index;BgDHTML5中文学习网 - HTML5先行者学习网

  - (void)removeAllObjects;BgDHTML5中文学习网 - HTML5先行者学习网

  -----给数组分配容量-----BgDHTML5中文学习网 - HTML5先行者学习网

  //NSArray *array;BgDHTML5中文学习网 - HTML5先行者学习网

  array = [NSMutableArray arrayWithCapacity:20];BgDHTML5中文学习网 - HTML5先行者学习网

  -----在数组末尾添加对象-----BgDHTML5中文学习网 - HTML5先行者学习网

  //- (void) addObject: (id) anObject;BgDHTML5中文学习网 - HTML5先行者学习网

  //NSMutableArray *array = [NSMutableArray arrayWithObjects:@"One",@"Two",@"Three",nil];BgDHTML5中文学习网 - HTML5先行者学习网

  [array addObject:@"Four"];BgDHTML5中文学习网 - HTML5先行者学习网

  NSLog(@"array:%@",array);BgDHTML5中文学习网 - HTML5先行者学习网

  -----删除数组中指定索引处对象-----BgDHTML5中文学习网 - HTML5先行者学习网

  //-(void) removeObjectAtIndex: (unsigned) index;BgDHTML5中文学习网 - HTML5先行者学习网

  //NSMutableArray *array = [NSMutableArray arrayWithObjects:@"One",@"Two",@"Three",nil];BgDHTML5中文学习网 - HTML5先行者学习网

  [array removeObjectAtIndex:1];BgDHTML5中文学习网 - HTML5先行者学习网

  NSLog(@"array:%@",array);BgDHTML5中文学习网 - HTML5先行者学习网

  ----- 数组枚举-----BgDHTML5中文学习网 - HTML5先行者学习网

  //1、- (NSEnumerator *)objectEnumerator; //从前向后BgDHTML5中文学习网 - HTML5先行者学习网

  //NSMutableArray *array = [NSMutableArray arrayWithObjects:@"One",@"Two",@"Three",nil];BgDHTML5中文学习网 - HTML5先行者学习网

  NSEnumerator *enumerator;BgDHTML5中文学习网 - HTML5先行者学习网

  enumerator = [array objectEnumerator];BgDHTML5中文学习网 - HTML5先行者学习网

  id thingie;BgDHTML5中文学习网 - HTML5先行者学习网

  while (thingie = [enumerator nextObject]) {BgDHTML5中文学习网 - HTML5先行者学习网

  NSLog(@"thingie:%@",thingie);BgDHTML5中文学习网 - HTML5先行者学习网

  }BgDHTML5中文学习网 - HTML5先行者学习网

  //2、- (NSEnumerator *)reverseObjectEnumerator; //从后向前BgDHTML5中文学习网 - HTML5先行者学习网

  //NSMutableArray *array = [NSMutableArray arrayWithObjects:BgDHTML5中文学习网 - HTML5先行者学习网

  @"One",@"Two",@"Three",nil];BgDHTML5中文学习网 - HTML5先行者学习网

  NSEnumerator *enumerator;BgDHTML5中文学习网 - HTML5先行者学习网

  enumerator = [array reverseObjectEnumerator];BgDHTML5中文学习网 - HTML5先行者学习网

  id object;BgDHTML5中文学习网 - HTML5先行者学习网

  while (object = [enumerator nextObject]) {BgDHTML5中文学习网 - HTML5先行者学习网

  NSLog(@"object:%@",object);BgDHTML5中文学习网 - HTML5先行者学习网

  }BgDHTML5中文学习网 - HTML5先行者学习网

  //3、快速枚举BgDHTML5中文学习网 - HTML5先行者学习网

  //NSMutableArray *array = [NSMutableArray arrayWithObjects:BgDHTML5中文学习网 - HTML5先行者学习网

  @"One",@"Two",@"Three",nil];BgDHTML5中文学习网 - HTML5先行者学习网

  for(NSString *string in array)BgDHTML5中文学习网 - HTML5先行者学习网

  {BgDHTML5中文学习网 - HTML5先行者学习网

  NSLog(@"string:%@",string);BgDHTML5中文学习网 - HTML5先行者学习网

  }BgDHTML5中文学习网 - HTML5先行者学习网

  ----- NSValue(对任何对象进行包装)-----BgDHTML5中文学习网 - HTML5先行者学习网

  //将NSRect放入NSArray中BgDHTML5中文学习网 - HTML5先行者学习网

  NSMutableArray *array = [[NSMutableArray alloc] init];BgDHTML5中文学习网 - HTML5先行者学习网

  NSValue *value;BgDHTML5中文学习网 - HTML5先行者学习网

  CGRect rect = CGRectMake(0, 0, 320, 480);BgDHTML5中文学习网 - HTML5先行者学习网

  value = [NSValue valueWithBytes:&rect objCType:@encode(CGRect)];BgDHTML5中文学习网 - HTML5先行者学习网

  [array addObject:value];BgDHTML5中文学习网 - HTML5先行者学习网

  NSLog(@"array:%@",array);BgDHTML5中文学习网 - HTML5先行者学习网

  //从Array中 提取BgDHTML5中文学习网 - HTML5先行者学习网

  value = [array objectAtIndex:0];BgDHTML5中文学习网 - HTML5先行者学习网

  [value getValue:&rect];BgDHTML5中文学习网 - HTML5先行者学习网

  NSLog(@"value:%@",value);BgDHTML5中文学习网 - HTML5先行者学习网

  ----★使用NSMutableArray要防止内存泄露★------BgDHTML5中文学习网 - HTML5先行者学习网

  NSObject* p1 = [[NSObject alloc] init];BgDHTML5中文学习网 - HTML5先行者学习网

  NSObject* p2 = [[NSObject alloc] init];BgDHTML5中文学习网 - HTML5先行者学习网

  NSMutableArray* objectsArray = [[NSMutableArray alloc] init];BgDHTML5中文学习网 - HTML5先行者学习网

  [objectsArray addObject:p1];BgDHTML5中文学习网 - HTML5先行者学习网

  NSLog(@"p1 count:%d", [p1 retainCount]);//输出 2,也就是执行追加对象后,对象的计数器也被加1BgDHTML5中文学习网 - HTML5先行者学习网

  //[p1 release];BgDHTML5中文学习网 - HTML5先行者学习网

  //NSLog(@"p1 count:%d", [p1 retainCount]);BgDHTML5中文学习网 - HTML5先行者学习网

  //同样做数组替换时BgDHTML5中文学习网 - HTML5先行者学习网

  [objectsArray replaceObjectAtIndex:0 withObject:p2];BgDHTML5中文学习网 - HTML5先行者学习网

  NSLog(@"p2 count:%d", [p2 retainCount]);//输出 2,同样也是2BgDHTML5中文学习网 - HTML5先行者学习网

  NSLog(@"p1 count:%d", [p1 retainCount]);//输出 1,对象p1仍然存在BgDHTML5中文学习网 - HTML5先行者学习网

  //[p2 release];BgDHTML5中文学习网 - HTML5先行者学习网

  //NSLog(@"p2 count:%d", [p2 retainCount]);BgDHTML5中文学习网 - HTML5先行者学习网

  //执行清空数组BgDHTML5中文学习网 - HTML5先行者学习网

  [objectsArray removeAllObjects];BgDHTML5中文学习网 - HTML5先行者学习网

  NSLog(@"p2 count:%d", [p2 retainCount]);//输出 1,对象p2仍然存在BgDHTML5中文学习网 - HTML5先行者学习网

  //[p2 release];BgDHTML5中文学习网 - HTML5先行者学习网

  由此可知,每次执行上面的数组操作后,要执行对象release,如上面注释中的语句,才能保证内存不泄露。BgDHTML5中文学习网 - HTML5先行者学习网

  NSSetBgDHTML5中文学习网 - HTML5先行者学习网

  Unordered collection of objects.BgDHTML5中文学习网 - HTML5先行者学习网

  Immutable. You cannot add or remove objects to it once it’s created.BgDHTML5中文学习网 - HTML5先行者学习网

  Important methods:BgDHTML5中文学习网 - HTML5先行者学习网

  + setWithObjects:(id)firstObj, ...; // nil terminatedBgDHTML5中文学习网 - HTML5先行者学习网

  - (int)count;BgDHTML5中文学习网 - HTML5先行者学习网

  - (BOOL)containsObject:(id)anObject;BgDHTML5中文学习网 - HTML5先行者学习网

  - (id)anyObject;BgDHTML5中文学习网 - HTML5先行者学习网

  - (void)makeObjectsPerformSelector:(SEL)aSelector;BgDHTML5中文学习网 - HTML5先行者学习网

  - (id)member:(id)anObject; // uses isEqual: and returns a matching object (if any)BgDHTML5中文学习网 - HTML5先行者学习网

  NSMutableSetBgDHTML5中文学习网 - HTML5先行者学习网

  Mutable version of NSSet.BgDHTML5中文学习网 - HTML5先行者学习网

  + (NSMutableSet *)set;BgDHTML5中文学习网 - HTML5先行者学习网

  - (void)addObject:(id)anObject;BgDHTML5中文学习网 - HTML5先行者学习网

  - (void)removeObject:(id)anObject;BgDHTML5中文学习网 - HTML5先行者学习网

  - (void)removeAllObjects;BgDHTML5中文学习网 - HTML5先行者学习网

  - (void)unionSet:(NSSet *)otherSet;BgDHTML5中文学习网 - HTML5先行者学习网

  - (void)minusSet:(NSSet *)otherSet;BgDHTML5中文学习网 - HTML5先行者学习网

  - (void)intersectSet:(NSSet *)otherSet;BgDHTML5中文学习网 - HTML5先行者学习网

  NSDictionaryBgDHTML5中文学习网 - HTML5先行者学习网

  key-value, key-value, ..... 一系列键值对。BgDHTML5中文学习网 - HTML5先行者学习网

  key(键)在整个dictionary是唯一的,通过key可以查询其对应的一个或多个value(值)。BgDHTML5中文学习网 - HTML5先行者学习网

  Hash table. Look up objects using a key to get a value.BgDHTML5中文学习网 - HTML5先行者学习网

  Immutable. You cannot add or remove objects to it once it’s created.BgDHTML5中文学习网 - HTML5先行者学习网

  Keys are objects which must implement. Keys are usually NSString objects.BgDHTML5中文学习网 - HTML5先行者学习网

  - (NSUInteger)hash & - (BOOL)isEqual:(NSObject *)objBgDHTML5中文学习网 - HTML5先行者学习网

  Important methods:BgDHTML5中文学习网 - HTML5先行者学习网

  + dictionaryWithObjectsAndKeys: (id)firstObject, ...;BgDHTML5中文学习网 - HTML5先行者学习网

  - (int)count;BgDHTML5中文学习网 - HTML5先行者学习网

  - (id)objectForKey:(id)key;BgDHTML5中文学习网 - HTML5先行者学习网

  - (NSArray *)allKeys;BgDHTML5中文学习网 - HTML5先行者学习网

  - (NSArray *)allValues;BgDHTML5中文学习网 - HTML5先行者学习网

  -----创建字典 -----BgDHTML5中文学习网 - HTML5先行者学习网

  //- (id) initWithObjectsAndKeys;BgDHTML5中文学习网 - HTML5先行者学习网

  //NSDictionary *dictionary = [[NSDictionary alloc] initWithObjectsAndKeys:@"One",@"1",@"Two",@"2",@"Three",@"3",nil];BgDHTML5中文学习网 - HTML5先行者学习网

  NSString *string = [dictionary objectForKey:@"One"];BgDHTML5中文学习网 - HTML5先行者学习网

  NSLog(@"string:%@",string);BgDHTML5中文学习网 - HTML5先行者学习网

  NSLog(@"dictionary:%@",dictionary);BgDHTML5中文学习网 - HTML5先行者学习网

  [dictionary release];BgDHTML5中文学习网 - HTML5先行者学习网

  NSMutableDictionaryBgDHTML5中文学习网 - HTML5先行者学习网

  Mutable version of NSDictionary.BgDHTML5中文学习网 - HTML5先行者学习网

  + (NSMutableDictionary *)dictionary;BgDHTML5中文学习网 - HTML5先行者学习网

  - (void)setObject:(id)anObject forKey:(id)key;BgDHTML5中文学习网 - HTML5先行者学习网

  - (void)removeObjectForKey:(id)key;BgDHTML5中文学习网 - HTML5先行者学习网

  - (void)removeAllObjects;BgDHTML5中文学习网 - HTML5先行者学习网

  - (void)addEntriesFromDictionary:(NSDictionary *)otherDictionary;BgDHTML5中文学习网 - HTML5先行者学习网

  -----创建可变字典 -----BgDHTML5中文学习网 - HTML5先行者学习网

  //创建BgDHTML5中文学习网 - HTML5先行者学习网

  NSMutableDictionary *dictionary = [NSMutableDictionary dictionary];BgDHTML5中文学习网 - HTML5先行者学习网

  //添加字典BgDHTML5中文学习网 - HTML5先行者学习网

  [dictionary setObject:@"One" forKey:@"1"];BgDHTML5中文学习网 - HTML5先行者学习网

  [dictionary setObject:@"Two" forKey:@"2"];BgDHTML5中文学习网 - HTML5先行者学习网

  [dictionary setObject:@"Three" forKey:@"3"];BgDHTML5中文学习网 - HTML5先行者学习网

  [dictionary setObject:@"Four" forKey:@"4"];BgDHTML5中文学习网 - HTML5先行者学习网

  NSLog(@"dictionary:%@",dictionary);BgDHTML5中文学习网 - HTML5先行者学习网

  //删除指定的字典BgDHTML5中文学习网 - HTML5先行者学习网

  [dictionary removeObjectForKey:@"3"];BgDHTML5中文学习网 - HTML5先行者学习网

  NSLog(@"dictionary:%@",dictionary);BgDHTML5中文学习网 - HTML5先行者学习网

(责任编辑:)
推荐书籍
推荐资讯
关于HTML5先行者 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助