由于工作重心发生了改变,Android开发暂时不会继续投入经历。MOMO最近在自学IOS游戏开发 哇咔咔~~目前还在学习阶段此篇文章主要用于备忘,欢迎各位大牛们给我多多虐虐我 互相学习~哇咔咔~~
在xcode中创建项目工程的方法在上一章已经介绍,着一篇主要介绍Objective-C语言中的一些常用数据结构
HelloWorldViewController.m类中
我们的测试语法代码添加在viewDidLoad方法中
1 2 3 4 5 6 7 8 |
- (void)viewDidLoad { [super viewDidLoad]; //程序启动界面显示之前会调用这个方法 //所以将语法代码添加在这里 } |
1.整型 (int) 浮点型 (float, double) 短长整型(short, long)
常用数据类型与c语言基本一样 难怪是c语言的超集
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
- (void)viewDidLoad { [super viewDidLoad]; //程序启动界面显示之前会调用这个方法 //所以将语法代码添加在这里 //整型 int i = 100; //浮点型 float f = 1.1; //双浮点型 double d = 2.2; //短整型 short int si = 200; //长整型 long long int ll = 123324123234123L; //输出数据与内存中所占字节数 //整型 NSLog(@"i = %d size = %lu byte ",i, sizeof(i)); //浮点型 NSLog(@"f = %f size = %lu byte",f,sizeof(f)); //双浮点型 NSLog(@"d = %e size = %lu byte",d,sizeof(d)); //短整型 NSLog(@"si = %hi size = %lu byte",si,sizeof(si)); //长整型 NSLog(@"ll = %lli size = %lu byte",ll,sizeof(si)); } |
Log打印结果
2.字符串 NSString* 与 char*
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
- (void)viewDidLoad { [super viewDidLoad]; //程序启动界面显示之前会调用这个方法 //所以将语法代码添加在这里 NSString * str = @"MOMO"; char *c = "15810463139"; //将NSString 转换为char * const char *change = [str UTF8String]; //输出log NSLog(@"str = %@ size = %lu", str,sizeof(str)); NSLog(@"c = %s size = %lu", c, sizeof(c)); NSLog(@"change = %s size = %lu", change, sizeof(change)); } |
Log打印结果
字符串格式化
使用stringWithFormat 方法来格式化字符串
意思就是将整型 字符型 等等 合并成一个NSString*类型
1 2 3 4 5 6 7 8 9 10 11 12 |
- (void)viewDidLoad { [super viewDidLoad]; //程序启动界面显示之前会调用这个方法 //所以将语法代码添加在这里 NSString * str = [NSString stringWithFormat:@"姓名:%@ 年龄:%d 邮箱:%@" ,@"雨松momo",25,@"xuanyusong@gmail.com"]; NSLog(@"str = %@",str); } |
Log 输出结果
3.布尔值
宏定义 真为YES 假为NO
因为Objective-C 是C语言的超集 所以在代码中写 true 和false 也是可以运行通过的
这里毕竟是Objective-C 所以还是建议使用YES 和 NO
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
- (void)viewDidLoad { [super viewDidLoad]; //程序启动界面显示之前会调用这个方法 //所以将语法代码添加在这里 bool a = false; bool b = true; if(a == b) { NSLog(@"a与b相等"); } if(a != b) { NSLog(@"a与b不等"); } bool c = YES; bool d = YES; if(c == d) { NSLog(@"c与d相等"); } if(c != d) { NSLog(@"c与d不等"); } } |
Log打印结果
4 .数组与字典
NSArray 数组: 使用它创建数组后,就不可以继续向这个数组中添加或者删除元素。
这个数组中可以储存任意类型object的对象指针 但是不能用处储存数据类型 比如int bool char 等等
下面这行代码中我将三个字符串和self 指针储存在了mArray这个数组中
1 2 3 4 |
//初始化不可变数组 mArray =[[NSArray alloc] initWithObjects:@"雨松MOMO",@"15810463139",@"xuanyusong@gmail.com",self,nil]; |
遍历方法一 : 很普遍java 语言 c 语言都这样来遍历
1 2 3 4 5 6 |
int count = [mArray count]; for (int i = 0; i < count; i++) { NSLog(@"固定数组 %@", [mArray objectAtIndex:i]); } |
遍历方法二: objective-c 2.0 引入的快速枚举法 不仅速度快 并且安全性高,推荐使用这种方式来遍历.
1 2 3 4 5 |
for (NSString * str in mArray) { NSLog(@"固定数组 %@", str); } |
打印Log信息,最后一项为self指针 ,所以将地址打印了出来。
NSMutableArray数组:它是一个可以变化的数组,数组创建完后还可以动态的向数组中添加与删除元素,并且可以向指定位置插入元素,基本上和链表差不多。
1 2 3 4 |
//初始化可变数组 mListArray=[NSMutableArray array]; |
addobject方法用于向数组中添加元素
1 2 3 4 5 6 7 |
//添加数组 - (void)addArray: (NSObject *) str { [mListArray addObject:str]; } |
removeObject方法用于删除元素
1 2 3 4 5 6 7 8 |
//删除数组 -(void) deleteArray:(NSString *)str { [mListArray removeObject:str]; } |
replaceObjectAtIndex 方法可以修改数组中的某一个元素
第一个参数为 索引的id
第二个参数为修改对象的指针
1 2 3 4 5 6 7 |
//修改数组中的元素 -(void)changeArray:(int)ID:(NSObject *) str { [mListArray replaceObjectAtIndex:ID withObject:str]; } |
insertObject方法用于向数组中插入一个元素
第一个参数 插入对象的指针
第二个参数 插入的索引
1 2 3 4 5 6 7 |
//向数组中插入一个元素 -(void)insertArray:(int)ID:(NSObject *) str { [mListArray insertObject:str atIndex:ID]; } |
创建MyClass对象
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
- (void)viewDidLoad { [super viewDidLoad]; mMyclass = [[MyClass alloc] init]; //在可变数组中添加一个值 [mMyclass addArray:@"雨松"]; [mMyclass addArray:@"宝贝"]; [mMyclass addArray:@"MOMO"]; [mMyclass addArray:[[MyClass alloc] init]]; [mMyclass changeArray:1:@"哇咔咔"]; //输出所有信息 [mMyclass printArray]; } |
MyClass.m
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
#import "MyClass.h" @implementation MyClass //重写init方法好比java语言类的构造函数 //如果不重写的话init的时候父类会帮我们返回self指针 //重写的好处是在初始化self指针的同时可以初始化一些数据 - (id)init { self = [super init]; if (self) { //给成员变量fuzhi mID = 100; //初始化不可变数组 mArray =[[NSArray alloc] initWithObjects:@"雨松MOMO",@"15810463139",@"xuanyusong@gmail.com",self,nil]; //初始化可变数组 mListArray=[NSMutableArray array]; } return self; } //添加数组 - (void)addArray: (NSObject *) str { [mListArray addObject:str]; } //删除数组 -(void) deleteArray:(NSString *)str { [mListArray removeObject:str]; } //修改数组中的元素 -(void)changeArray:(int)ID:(NSObject *) str { [mListArray replaceObjectAtIndex:ID withObject:str]; } //向数组中插入一个元素 -(void)insertArray:(int)ID:(NSObject *) str { [mListArray insertObject:str atIndex:ID]; } //遍历数组中的数据 //用log输出 - (void)printArray { for (NSString *str in mArray) { NSLog(@"固定数组 %@", str); } for (NSString *str in mListArray) { NSLog(@"可变数组数组 %@", str); } } @end |
内容比较少,代码就不上传了 如果代码中有问题还请大家告诉MOMO,我会及时的更正,大家共同学习 哇咔咔~~~
- 本文固定链接: https://www.xuanyusong.com/archives/374
- 转载请注明: 雨松MOMO 于 雨松MOMO程序研究院 发表
学习了…赞!!!
开始学习object-c,谢谢呀。
关于bool 与Bool 1 同样是用于布尔值变量的定义符2 ob-c中 定义的Bool 比c定义的bool出现要早 Bool属于ob-c本身范畴 但兼容c中的bool 3 Bool应该只用YES(1) NO(0)两种值 由于其实际定义类型为(signed char) 对其赋超出范围的值时只截取8位二进制 这就引发了一个问题 bool 变量赋值256就是256 if判断为真 Bool变量赋值256 最后为0 if判断为假 这里要注意
感谢你的回复
//初始化不可变数组
NSArray mArray =[[NSArray alloc] initWithObjects:@”雨松MOMO”,@”15810463139″,@”xuanyusong@gmail.com”,self,nil];
.lu代表什么,使long unsigned的吗?
第一张图片放错了。“Log打印结果”你把第二个结果放到第一个上了。