结构struct:2-结构的嵌套
在Objective-C的语法中,结构的定义可以十分的灵活。例如,可以定义一个结构,本身还包含其他的结构作为自己的一个或者多个成员,另外也可以定义包含数组的结构。
嵌套结构的定义
在学习UIView类时,我们可以了解到任何一个控件在设备上的布局,都是由其frame属性所决定的,而frame属性则是一个CGRect类型的结构体,其中还包含了两个结构成员,分别为原点坐标以及长宽,类型为CGSize和CGPoint。
- CGRect结构的构成如下。由另外两个结构体CGSize和CGPoint组成。
struct CGRect {
CGPoint origin;
CGSize size;
};
typedef struct CGRect CGRect;
- CGPoint结构的构成
struct CGPoint {
CGFloat x;
CGFloat y;
};
typedef struct CGPoint CGPoint;
- CGSize结构的构成
struct CGSize {
CGFloat width;
CGFloat height;
};
typedef struct CGSize CGSize;
嵌套结构的初始化
- 通用初始化方法。当需要定义嵌套结构变量时,可以先分别定义其中的结构体成员,如下所示:
//普通初始化方法
CGPoint point = {0,0};
CGSize size = {100,100};
CGRect frame = {point, size};
- 快速初始化方法。在系统提供的框架中,有时会提供一些函数,来供开发者快速创建结构体成员变量。
//快速初始化
CGPoint point1 = CGPointMake(0, 0);
CGSize size1 = CGSizeMake(100, 100);
CGRect frame1 = {point1, size1};
//快速初始化
CGRect frame2 = CGRectMake(0, 0, 100, 100);
嵌套结构成员变量的访问
可以通过多级点语法来访问结构体中嵌套结构体的成员变量。
void structTest () {
//普通初始化方法
CGPoint point = {0,0};
CGSize size = {100,100};
CGRect frame = {point, size};
//快速初始化
CGPoint point1 = CGPointMake(0, 0);
CGSize size1 = CGSizeMake(100, 100);
CGRect frame1 = {point1, size1};
//快速初始化
CGRect frame2 = CGRectMake(0, 0, 100, 100);
//访问
frame.size.width = 200;
frame1.size.width = 200;
frame2.size.width = 200;
NSLog(@"%f--%f--%f",frame.size.width,frame1.size.width,frame2.size.width);
}
示例代码
https://github.com/99ios/6.5.2
文章发布时间为: September 5th , 2016 at 11:53 am
最后编辑时间为: September 6th , 2017 at 10:57 am
本文由 99ios 创作,转载请注明出处
最后编辑时间为: September 6th , 2017 at 10:57 am
本文由 99ios 创作,转载请注明出处