// 1.NSLog的使用
// 显示字符串
// NSString * str = @"beijing";
// NSLog(@"%@",str);
// NSLog(@"%@",@"meihao");
// 显示浮点数
// NSLog(@"%f",224.678); //224.678000
// NSLog(@"%.3f",223.8834); //223.883
// 2.NSString
// NSString * aStr = [[NSString alloc]initWithString:@"this is"];
// NSLog(@"aStr %@",aStr);
// NSLog(@"aStr %@ %@",@"ni",aStr);
// 3.2 实例化枚举enum并遍历
// playerState pState = playerStatePlaying;
// switch (pState) {
// case playerStateOff:
// NSLog(@"playerStateOff");
// break;
// case playerStatePlaying:
// NSLog(@"playerStatePlaying");
// break;
// case playerStatePaused:
// NSLog(@"playerStatePaused");
// break;
//
// default:
// break;
// }
// 4.goto语句: 可以强制改变程序运行的步骤 但也因此可能会导致程序的结构混乱 所以尽量不用
// NSLog(@"1");
// goto state2; //跳转到指定的标签
// NSLog(@"2");
// state1: //标签
// NSLog(@"3");
// state2: //标签
// NSLog(@"4");
// 5.数组
// 二维数组 3 表示有多少行 2 表示有多少列
// int multiArray[3][2] = {
// {1,2},
// {3,4},
// {5,6}
// };
// for (int y = 0; y < 3; y++) {
// for (int x = 0; x < 2; x++) {
// NSLog(@"2array %d",multiArray[y][x]);
// }
// }
// 三维数组
// int mutaArray[2][3][2] = {
// {
// {1,2},
// {3,4},
// {5,6}
// },
// {
// {7,8},
// {9,10},
// {11,12}
// }
// };
// for (int z = 0; z < 2; z++) { //表示有多少二维数组
// for (int y = 0; y < 3; y++) { //表示有多少行
// for (int x = 0; x < 2; x++) { //表示有多少列
// NSLog(@"3array %d",mutaArray[z][y][x]);
// }
// }
// }
// 6.NSArray 数据类型只能用单一类型 不能够混合不同的数据类型
// NSString * a = @"apple";
// NSString * b = @"banana";
// NSString * c = @"cherry";
//// 创建数组
//// NSArray * array = [NSArray arrayWithObjects:a,b,c, nil];
//// 创建数组的简单方法
// NSArray * array = @[a,b,c];
//// 通过对象找索引
// NSInteger find = [array indexOfObject:b];
// NSLog(@"banana is %ld",(long)find);
//// 通过索引找对象
// NSLog(@"array[1] is %@",[array objectAtIndex:1]);
//// 获取数组的长度
// NSInteger len = array.count;
// NSLog(@"array的长度为%ld",len);
//// 显示所有的数据
// for (NSString * detail in array) {
// NSLog(@"%@",detail);
// }
// 7.NSMutableArray 比 NSArray好用 是因为它可以动态的新增和删除数据
// NSMutableArray * mutableArray = [NSMutableArray array];
// [mutableArray addObject:@"henan"];
// [mutableArray addObject:@"zhengzhou"];
// [mutableArray addObject:@"anyang"];
// [mutableArray addObject:@"hebi"];
// 遍历数组
// for (NSString * str in mutableArray) {
// NSLog(@"%@",str);
// }
// 插入数据
// [mutableArray insertObject:@"da" atIndex:1];
// [mutableArray insertObject:@"xiao" atIndex:1];
// 遍历数组
// for (NSString * str in mutableArray) {
// NSLog(@"%@",str);
// }
// 获取数组的长度
// int len = mutableArray.count;
// for (int i = 0; i < len; i++) {
// NSString * str = [mutableArray objectAtIndex:i];
// if ([str isEqualToString:@"da"]) {
// NSLog(@"find %@",str);
// }
// NSLog(@"%@",str);
// }
// 删除指定下标的数据
// [mutableArray removeObjectAtIndex:2];
// for (NSString * str in mutableArray) {
// NSLog(@"%@",str);
// }
// 第二种方式:初始化并添加数据
// NSMutableArray * nmArray = [NSMutableArray arrayWithObjects:@"henan",@"zhengzhou",@"anyang",@"hebi", nil];
// NSLog(@"%@",nmArray);
// 8.字典
// int i = 299;
// float f = 89.34;
// NSDictionary * dict = @{
// @"baoma":[NSDecimalNumber decimalNumberWithString:@"77777.00"],
// @"xiali":@"no more",
// @"fengtian":[NSNumber numberWithInt:i],
// @"bieke":[NSNumber numberWithFloat:f]
// };
// 遍历字典可以拿到字典的key
// for (id key in dict) {
// NSLog(@"there are %@ , %@ is buzhidao",dict[key],key);
// }
// 9.可变字典 赋值时使用的是setObject: forKey:
// NSMutableDictionary * nmDict = [NSMutableDictionary dictionary];
// [nmDict setObject:[NSDecimalNumber decimalNumberWithString:@"56.89"] forKey:@"baoma"];
// [nmDict setObject:[NSDecimalNumber decimalNumberWithString:@"99.87"] forKey:@"benci"];
// [nmDict setObject:[NSNumber numberWithInt:23] forKey:@"aidi"];
// [nmDict setObject:[NSNumber numberWithFloat:123.89] forKey:@"bieke"];
// for (id key in nmDict) {
// NSLog(@"这个价值为%@",nmDict[key]);
// }
// 删除某条数据
// [nmDict removeObjectForKey:@"benci"];
// for (id key in nmDict) {
// NSLog(@"这个价值为%@",nmDict[key]);
// }
// 10.创建自己的class类型 项目中的Car.h和Car.m 就是创建的class类
// Car * car = [[Car alloc]init];
// 调用方法
// [car printInfo];
// [car sum];
// [car sum1:9];
// [car sum2:9 andValue2:8];
// [car summer];
// 11.id 类型 严格规定只适用于对象 注意:使用id的时候不用加*
// id car = [[Car alloc]init];
// [car sum];
// [car sum1:9];
// 12.Class类型的继承
// OC中只有单一继承 没有多重继承
// Person * p = [[Person alloc]init];
// [p eat];
// Woman * woman = [[Woman alloc]init];
// [woman eat];
// 13.super的使用
// Person * p = [[Person alloc]init];
// [p run];
// Woman * woman = [[Woman alloc]init];
// [woman run];
// 14.public protected private 的使用
// 他们都是针对的变量 不是针对的函数
// Bus * bus = [[Bus alloc]init];
// bus -> publicNumber = 20; //赋值的方式 ->
// bus -> privateNumber = 30; 私有的 不能运行
// bus -> protectedNumber = 40; 保护的 不能运行
// [bus print];
// 15.@property @synthesize 和 @dynamic的使用
// @property 声明方法 -> 头文件中声明getter和setter方法
// @synthesize 在.m中有系统自动帮我们实现getter和setter方法
// @dynamic 在.m中需要我们自己实现getter和setter方法
// 16.static 变量
// static的用途:当应用程序离开之后,变量还保存在内存中并不会释放,可以供下次继续使用
// 变量分为三种:
// 1>全局变量:全局变量声明在主函数之外,这个变量存在于整个应用程序之中,可以全局调用,通常用来定义一些常量,不应为了方便将所有变量都设置成全局变量,否则以后会出现变量名称管理上的问题,生命周期开始于程序开始之时,终止于程序结束之时。
// 2>本地变量也就是局部变量 声明在函数之内的变量,或是声明在参数列之前的变量,声明周期开始于函数被调用之后,终止于函数运行完毕之时
// 3>块变量是指声明在某个陈述块之中的变量,在函数结束之后,就会自动清除
// 当变量声明加上static限定时,就是变成全局变量
// Bus * bus = [[Bus alloc]init];
// [bus printInfo]; //1
// [bus printInfo]; //2
// [bus printInfo]; //3