@fiy-fish
2015-07-15T20:06:27.000000Z
字数 2500
阅读 1288
Objective-c
// main.m
// day04-03-NSArray
//
// Created by Aaron on 15/7/6.
// Copyright (c) 2015年 Aaron. All rights reserved.
//
#import <Foundation/Foundation.h>
//相同类型的一些数据有序的排列所构成的集合
//OC的数组可以存放一些对象
//存储任意的对象
//本质上,OC的数组存储的是对象指针
//NSArray
//NSMutableArray
typedef struct STD_INFO
{
int temp;
struct STD_INFO *next;
}Std;
//创建
#if 0
int main(int argc, const char * argv[]) {
@autoreleasepool {
//下面的方法创建不可变数组是没有意义的
NSArray *array = [[NSArray alloc] init];
NSLog(@"%@",array);
//@数字 OC2.0的新特性 可以快速将数字变成对象类型
int temp = 10;
NSLog(@"%@",@(temp));
//用一些对象来初始化数组
//对象按顺序排列
//nil 表示数组结束了
NSArray *array1 = [[NSArray alloc] initWithObjects:@"hello",@2, nil];
NSLog(@"array1 = %@",array1);
//用数组来初始化新的数组,可以实现可变和不可变之间的互相转换
NSArray *array2 = [[NSArray alloc] initWithArray:array1];
NSLog(@"%@",array2);
//类方法提供了一个用单个对象创建数组的方法
NSArray *array3 = [NSArray arrayWithObject:@222];
NSLog(@"%@",array3);
NSArray *array4 = [NSArray arrayWithObjects:@"123",@"321",@"1234", nil];
NSLog(@"%@",array4);
NSArray *array5 = [NSArray arrayWithArray:array4];
NSLog(@"array5 = %@",array5);
//2.0 新特性
NSArray *array6 = @[@1,@2,@"hello"];
NSLog(@"%@",array6);
}
return 0;
}
#endif
//数组的可变和不可变是什么意思
#if 0
int main()
{
NSMutableString *str = [NSMutableString stringWithString:@"xxxxx"];
NSString *str1 = @"hello";
NSArray *array = [NSArray arrayWithObjects:str,str1, nil];
NSLog(@"%@",array);
[str appendString:@"......."];
NSLog(@"%@",array);
}
#endif
//索引有关的方法
#import "Person.h"
#if 0
int main()
{
Person *p = [[Person alloc] init];
NSArray *array = @[@1,p,@2,p,@3,@4];
//获取数组的元素的个数
//-(NSInteger)count;
NSInteger count = [array count];
NSLog(@"%ld",count);
//获取指定索引的对象
//索引从0开始
//如果明确的知道自己取出来的对象是什么类型,那么可以直接用该类型的指针去接收
NSNumber *obj = [array objectAtIndex:0];
NSLog(@"%@",obj);
//如果不知道对象类型,用id
id obj1 = [array objectAtIndex:1];
//确定对象的类型再执行方法
if([obj1 isKindOfClass:[p class]])
{
[obj1 eatFruit];
}
//注意: 在OC里面,数组不允许越界
//获取对象对应的索引
NSInteger index = [array indexOfObject:p];
//如果对象不在数组里,则返回NSNotFound
//如果存在多份,那么返回找到的第一个索引
if(index != NSNotFound)
{
NSLog(@"index = %ld",index);
}
//检测数组里是否包含了某对象
BOOL contains = [array containsObject:@2222222];
NSLog(@"%@",contains?@"包含":@"不包含");
//取第一个元素
id obj2 = [array firstObject];
//取最后一个元素
id obj3 = [array lastObject];
}
#endif
//抽取子数组
int main()
{
NSArray *array = @[@1,@2,@3,@4];
//抽取指定范围内的子数组
NSArray *sub = [array subarrayWithRange:NSMakeRange(0, 2)];
NSLog(@"%@",sub);
//NSSet
NSMutableIndexSet *indexSet = [NSMutableIndexSet indexSet];
[indexSet addIndex:0];
[indexSet addIndex:2];
sub = [array objectsAtIndexes:indexSet];
NSLog(@"%@",sub);
}
#import <Foundation/Foundation.h>
@interface Person : NSObject
-(void)eatFruit;
@end
#import "Person.h"
@implementation Person
-(void)eatFruit
{
NSLog(@"人吃水果");
}
-(NSString *)description
{
return @"我是一个人";
}
@end