在xcode中创建项目工程的方法在上一章已经介绍,着一篇主要介绍Objective-C语言中的一些常用数据结构
HelloWorldViewController.m类中
我们的测试语法代码添加在viewDidLoad方法中
1 | - ( void )viewDidLoad |
2 | { |
3 | [super viewDidLoad]; |
4 | //程序启动界面显示之前会调用这个方法 |
5 | //所以将语法代码添加在这里 |
6 | } |
1.整型 (int) 浮点型 (float, double) 短长整型(short, long)
常用数据类型与c语言基本一样 难怪是c语言的超集
01 | - ( void )viewDidLoad |
02 | { |
03 | [super viewDidLoad]; |
04 | //程序启动界面显示之前会调用这个方法 |
05 | //所以将语法代码添加在这里 |
06 |
07 | //整型 |
08 | int i = 100; |
09 | //浮点型 |
10 | float f = 1.1; |
11 | //双浮点型 |
12 | double d = 2.2; |
13 | //短整型 |
14 | short int si = 200; |
15 | //长整型 |
16 | long long int ll = 123324123234123L; |
17 |
18 | //输出数据与内存中所占字节数 |
19 | //整型 |
20 | NSLog(@ "i = %d size = %lu byte " ,i, sizeof (i)); |
21 | //浮点型 |
22 | NSLog(@ "f = %f size = %lu byte" ,f, sizeof (f)); |
23 | //双浮点型 |
24 | NSLog(@ "d = %e size = %lu byte" ,d, sizeof (d)); |
25 | //短整型 |
26 | NSLog(@ "si = %hi size = %lu byte" ,si, sizeof (si)); |
27 | //长整型 |
28 | NSLog(@ "ll = %lli size = %lu byte" ,ll, sizeof (si)); |
29 | } |
Log打印结果
2.字符串 NSString* 与 char*
01 | - ( void )viewDidLoad |
02 | { |
03 | [super viewDidLoad]; |
04 | //程序启动界面显示之前会调用这个方法 |
05 | //所以将语法代码添加在这里 |
06 | NSString * str = @ "MOMO" ; |
07 | char *c = "15810463139" ; |
08 |
09 | //将NSString 转换为char * |
10 | const char *change = [str UTF8String]; |
11 |
12 | //输出log |
13 | NSLog(@ "str = %@ size = %lu" , str, sizeof (str)); |
14 | NSLog(@ "c = %s size = %lu" , c, sizeof (c)); |
15 | NSLog(@ "change = %s size = %lu" , change, sizeof (change)); |
16 |
17 | } |
Log打印结果
字符串格式化
使用stringWithFormat 方法来格式化字符串
意思就是将整型 字符型 等等 合并成一个NSString*类型
01 | - ( void )viewDidLoad |
02 | { |
03 | [super viewDidLoad]; |
04 | //程序启动界面显示之前会调用这个方法 |
05 | //所以将语法代码添加在这里 |
06 | NSString * str = [NSString stringWithFormat:@ "姓名:%@ 年龄:%d 邮箱:%@" ,@ "雨松momo" ,25,@ "xuanyusong@gmail.com" ]; |
07 |
08 | NSLog(@ "str = %@" ,str); |
09 |
10 | } |
Log 输出结果
3.布尔值
宏定义 真为YES 假为NO
因为Objective-C 是C语言的超集 所以在代码中写 true 和false 也是可以运行通过的
这里毕竟是Objective-C 所以还是建议使用YES 和 NO
01 | - ( void )viewDidLoad |
02 | { |
03 | [super viewDidLoad]; |
04 | //程序启动界面显示之前会调用这个方法 |
05 | //所以将语法代码添加在这里 |
06 |
07 | bool a = false ; |
08 | bool b = true ; |
09 |
10 | if (a == b) |
11 | { |
12 | NSLog(@ "a与b相等" ); |
13 | } |
14 |
15 | if (a != b) |
16 | { |
17 | NSLog(@ "a与b不等" ); |
18 | } |
19 |
20 | bool c = YES; |
21 | bool d = YES; |
22 |
23 | if (c == d) |
24 | { |
25 | NSLog(@ "c与d相等" ); |
26 | } |
27 |
28 | if (c != d) |
29 | { |
30 | NSLog(@ "c与d不等" ); |
31 | } |
32 |
33 | } |
Log打印结果
4 .数组与字典
NSArray 数组: 使用它创建数组后,就不可以继续向这个数组中添加或者删除元素。
这个数组中可以储存任意类型object的对象指针 但是不能用处储存数据类型 比如int bool char 等等
下面这行代码中我将三个字符串和self 指针储存在了mArray这个数组中
1 | //初始化不可变数组 |
2 | mArray =[[NSArray alloc] initWithObjects:@ "雨松MOMO" ,@ "15810463139" ,@ "xuanyusong@gmail.com" ,self,nil]; |
遍历方法一 : 很普遍java 语言 c 语言都这样来遍历
1 | int count = [mArray count]; |
2 | for ( int i = 0; i < count; i++) { |
3 | NSLog(@ "固定数组 %@" , [mArray objectAtIndex:i]); |
4 | } |
遍历方法二: objective-c 2.0 引入的快速枚举法 不仅速度快 并且安全性高,推荐使用这种方式来遍历.
1 | for (NSString * str in mArray) { |
2 | NSLog(@ "固定数组 %@" , str); |
3 | } |
打印Log信息,最后一项为self指针 ,所以将地址打印了出来。
NSMutableArray数组:它是一个可以变化的数组,数组创建完后还可以动态的向数组中添加与删除元素,并且可以向指定位置插入元素,基本上和链表差不多。
1 | //初始化可变数组 |
2 | mListArray=[NSMutableArray array]; |
addobject方法用于向数组中添加元素
1 | //添加数组 |
2 | - ( void )addArray: (NSObject *) str |
3 | { |
4 | [mListArray addObject:str]; |
5 | } |
removeObject方法用于删除元素
1 | //删除数组 |
2 | -( void ) deleteArray:(NSString *)str |
3 | { |
4 | [mListArray removeObject:str]; |
5 |
6 | } |
replaceObjectAtIndex 方法可以修改数组中的某一个元素
第一个参数为 索引的id
第二个参数为修改对象的指针
1 | //修改数组中的元素 |
2 | -( void )changeArray:( int )ID:(NSObject *) str |
3 | { |
4 | [mListArray replaceObjectAtIndex:ID withObject:str]; |
5 | } |
insertObject方法用于向数组中插入一个元素
第一个参数 插入对象的指针
第二个参数 插入的索引
1 | //向数组中插入一个元素 |
2 | -( void )insertArray:( int )ID:(NSObject *) str |
3 | { |
4 | [mListArray insertObject:str atIndex:ID]; |
5 | } |
创建MyClass对象
01 | - ( void )viewDidLoad |
02 | { |
03 | [super viewDidLoad]; |
04 |
05 | mMyclass = [[MyClass alloc] init]; |
06 |
07 | //在可变数组中添加一个值 |
08 | [mMyclass addArray:@ "雨松" ]; |
09 | [mMyclass addArray:@ "宝贝" ]; |
10 | [mMyclass addArray:@ "MOMO" ]; |
11 | [mMyclass addArray:[[MyClass alloc] init]]; |
12 |
13 | [mMyclass changeArray:1:@ "哇咔咔" ]; |
14 |
15 | //输出所有信息 |
16 | [mMyclass printArray]; |
17 |
18 | } |
MyClass.m
01 | #import "MyClass.h" |
02 |
03 | @implementation MyClass |
04 |
05 | //重写init方法好比java语言类的构造函数 |
06 | //如果不重写的话init的时候父类会帮我们返回self指针 |
07 | //重写的好处是在初始化self指针的同时可以初始化一些数据 |
08 | - (id)init |
09 | { |
10 | self = [super init]; |
11 | if (self) { |
12 | //给成员变量fuzhi |
13 | mID = 100; |
14 | //初始化不可变数组 |
15 | mArray =[[NSArray alloc] initWithObjects:@ "雨松MOMO" ,@ "15810463139" ,@ "xuanyusong@gmail.com" ,self,nil]; |
16 |
17 | //初始化可变数组 |
18 | mListArray=[NSMutableArray array]; |
19 |
20 | } |
21 |
22 | return self; |
23 | } |
24 |
25 | //添加数组 |
26 | - ( void )addArray: (NSObject *) str |
27 | { |
28 | [mListArray addObject:str]; |
29 | } |
30 |
31 | //删除数组 |
32 | -( void ) deleteArray:(NSString *)str |
33 | { |
34 | [mListArray removeObject:str]; |
35 |
36 | } |
37 |
38 | //修改数组中的元素 |
39 | -( void )changeArray:( int )ID:(NSObject *) str |
40 | { |
41 | [mListArray replaceObjectAtIndex:ID withObject:str]; |
42 | } |
43 |
44 | //向数组中插入一个元素 |
45 | -( void )insertArray:( int )ID:(NSObject *) str |
46 | { |
47 | [mListArray insertObject:str atIndex:ID]; |
48 | } |
49 |
50 | //遍历数组中的数据 |
51 | //用log输出 |
52 | - ( void )printArray |
53 | { |
54 | for (NSString *str in mArray) { |
55 | NSLog(@ "固定数组 %@" , str); |
56 | } |
57 |
58 | for (NSString *str in mListArray) { |
59 | NSLog(@ "可变数组数组 %@" , str); |
60 | } |
61 |
62 | } |
63 | @end |