免費開源的iOS開發學習平臺

                                                結構struct:2-結構的嵌套

                                                在Objective-C的語法中,結構的定義可以十分的靈活。例如,可以定義一個結構,本身還包含其他的結構作為自己的一個或者多個成員,另外也可以定義包含數組的結構。

                                                嵌套結構的定義

                                                在學習UIView類時,我們可以了解到任何一個控件在設備上的布局,都是由其frame屬性所決定的,而frame屬性則是一個CGRect類型的結構體,其中還包含了兩個結構成員,分別為原點坐標以及長寬,類型為CGSizeCGPoint。

                                                • CGRect結構的構成如下。由另外兩個結構體CGSizeCGPoint組成。
                                                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


                                                欧美超级精品一级A片|欧美一级黄色视频|国产精品自在在线午夜免费|4444亚洲人成无码网在线观看|亚洲ⅴa曰本va欧美va视频