[关闭]
@fiy-fish 2015-07-15T12:06:27.000000Z 字数 2500 阅读 1171

day04-03-NSArray

Objective-c


  1. // main.m
  2. // day04-03-NSArray
  3. //
  4. // Created by Aaron on 15/7/6.
  5. // Copyright (c) 2015年 Aaron. All rights reserved.
  6. //
  7. #import <Foundation/Foundation.h>
  8. //相同类型的一些数据有序的排列所构成的集合
  9. //OC的数组可以存放一些对象
  10. //存储任意的对象
  11. //本质上,OC的数组存储的是对象指针
  12. //NSArray
  13. //NSMutableArray
  14. typedef struct STD_INFO
  15. {
  16. int temp;
  17. struct STD_INFO *next;
  18. }Std;
  19. //创建
  20. #if 0
  21. int main(int argc, const char * argv[]) {
  22. @autoreleasepool {
  23. //下面的方法创建不可变数组是没有意义的
  24. NSArray *array = [[NSArray alloc] init];
  25. NSLog(@"%@",array);
  26. //@数字 OC2.0的新特性 可以快速将数字变成对象类型
  27. int temp = 10;
  28. NSLog(@"%@",@(temp));
  29. //用一些对象来初始化数组
  30. //对象按顺序排列
  31. //nil 表示数组结束了
  32. NSArray *array1 = [[NSArray alloc] initWithObjects:@"hello",@2, nil];
  33. NSLog(@"array1 = %@",array1);
  34. //用数组来初始化新的数组,可以实现可变和不可变之间的互相转换
  35. NSArray *array2 = [[NSArray alloc] initWithArray:array1];
  36. NSLog(@"%@",array2);
  37. //类方法提供了一个用单个对象创建数组的方法
  38. NSArray *array3 = [NSArray arrayWithObject:@222];
  39. NSLog(@"%@",array3);
  40. NSArray *array4 = [NSArray arrayWithObjects:@"123",@"321",@"1234", nil];
  41. NSLog(@"%@",array4);
  42. NSArray *array5 = [NSArray arrayWithArray:array4];
  43. NSLog(@"array5 = %@",array5);
  44. //2.0 新特性
  45. NSArray *array6 = @[@1,@2,@"hello"];
  46. NSLog(@"%@",array6);
  47. }
  48. return 0;
  49. }
  50. #endif
  51. //数组的可变和不可变是什么意思
  52. #if 0
  53. int main()
  54. {
  55. NSMutableString *str = [NSMutableString stringWithString:@"xxxxx"];
  56. NSString *str1 = @"hello";
  57. NSArray *array = [NSArray arrayWithObjects:str,str1, nil];
  58. NSLog(@"%@",array);
  59. [str appendString:@"......."];
  60. NSLog(@"%@",array);
  61. }
  62. #endif
  63. //索引有关的方法
  64. #import "Person.h"
  65. #if 0
  66. int main()
  67. {
  68. Person *p = [[Person alloc] init];
  69. NSArray *array = @[@1,p,@2,p,@3,@4];
  70. //获取数组的元素的个数
  71. //-(NSInteger)count;
  72. NSInteger count = [array count];
  73. NSLog(@"%ld",count);
  74. //获取指定索引的对象
  75. //索引从0开始
  76. //如果明确的知道自己取出来的对象是什么类型,那么可以直接用该类型的指针去接收
  77. NSNumber *obj = [array objectAtIndex:0];
  78. NSLog(@"%@",obj);
  79. //如果不知道对象类型,用id
  80. id obj1 = [array objectAtIndex:1];
  81. //确定对象的类型再执行方法
  82. if([obj1 isKindOfClass:[p class]])
  83. {
  84. [obj1 eatFruit];
  85. }
  86. //注意: 在OC里面,数组不允许越界
  87. //获取对象对应的索引
  88. NSInteger index = [array indexOfObject:p];
  89. //如果对象不在数组里,则返回NSNotFound
  90. //如果存在多份,那么返回找到的第一个索引
  91. if(index != NSNotFound)
  92. {
  93. NSLog(@"index = %ld",index);
  94. }
  95. //检测数组里是否包含了某对象
  96. BOOL contains = [array containsObject:@2222222];
  97. NSLog(@"%@",contains?@"包含":@"不包含");
  98. //取第一个元素
  99. id obj2 = [array firstObject];
  100. //取最后一个元素
  101. id obj3 = [array lastObject];
  102. }
  103. #endif
  104. //抽取子数组
  105. int main()
  106. {
  107. NSArray *array = @[@1,@2,@3,@4];
  108. //抽取指定范围内的子数组
  109. NSArray *sub = [array subarrayWithRange:NSMakeRange(0, 2)];
  110. NSLog(@"%@",sub);
  111. //NSSet
  112. NSMutableIndexSet *indexSet = [NSMutableIndexSet indexSet];
  113. [indexSet addIndex:0];
  114. [indexSet addIndex:2];
  115. sub = [array objectsAtIndexes:indexSet];
  116. NSLog(@"%@",sub);
  117. }

  1. #import <Foundation/Foundation.h>
  2. @interface Person : NSObject
  3. -(void)eatFruit;
  4. @end

  1. #import "Person.h"
  2. @implementation Person
  3. -(void)eatFruit
  4. {
  5. NSLog(@"人吃水果");
  6. }
  7. -(NSString *)description
  8. {
  9. return @"我是一个人";
  10. }
  11. @end
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注