QQ浏览器HD的动态化方案QBDF的总体架构设计(2)【简书被冻结-搬运】

原作时间:2019~2021年

此次共享,腾讯内网 / 外网同步发布。

内部代码地址:https://git.code.oa.com/fatboyli/QBDF

外部代码地址:GitHub - ventureli/QBDF

两年前的一个混淆包(无源码):GitHub - ventureli/VLOCInterpreter

作者:腾讯fatboyli(李文强)

1.最终形态预览

上一篇文章我给大家介绍了QBDF这个框架的前世今生,整整四个版本的框架优化,大约耗时了3个月时间来搞定这件事。最终我们的QBDF的运行结构如下图。

代码结构运行图

下面以QQ浏览器HD短视频页面的代码来进行说明下。

QQ浏览器HD短视频QBDF代码

其中 最左侧的就是我们QBDF的脚本,是不是看起来和OC一样?对的,QBDF的目标下发OC 的.m 文件热更新,当然是完全一样的。

其中中间的部分就是我们生成的中间代码,我们通过自己设计的12条指令,把OC代码进行翻译为指令数组,然后就可以用虚拟机取运行了。大家看到的中间代码目前是JSON格式,没有被压缩的样式。最右侧的就是QBDF虚拟机对中间代码执行的效果。目前QQ浏览器HD iOS版本大家还可以看得到这个短视频页面。这个页面就是采用QBDF完成开发的。

2.QBDF架构

此章节主要简单介绍下QBDF整体架构。

2.1.QBDF主要组成

整个QBDF主要氛围两部分。一个是解释器,一个是虚拟机。两者的分工主要如下。

解释器

词法分析

语法分析与语法制导翻译

中间代码生成

中间代码混淆

虚拟机

虚拟机对接OC的四大驱动

运行上下文与过程调用解释器(就是PC指针,JMP,JZ等定位和符号表出栈入栈等操作)

符号表

参数接口与返回值接口处理

通过上面的描述,其实我们可以直到,QBDF解释器的部分并不一定要在客户端完成,我们完全可以在其他的地方编译好中间代码,然后直接由客户端的VM去解释中间代码就可以了。我在QBDF客户端SDK的基础上,我重写了解释器的部分,(客户端用OC实现,云解释器用C++实现)为什么不都用C++实现呢?确实都用C++实现比较好的。但是因为客户端的SDK是先写的,后来集成后不久我就离职了,所以一直没有进行统一。所以整个QBDF的组成就是这个样子。

QBDF 的整个组成。

2.2 QBDF和编译原理

整个QBDF是一个解释OC语言并运行的框架,它的设计就离不开编译原理层面的东西,这里简单介绍下。如果没有兴趣可以直接跳到下一章节从解释器最开始的词法解析去看。编译原理的知识是非常复杂和难以理解的。我在做这个项目的时候也是基本都忘光了。重新找了一个母校的编译原理课件重新学习了好几周才明白。就是这个,为母校点个赞,非常的通俗易懂的课件。

哈工大编译原理课件

我们直到对任何一个语言的编译过程主要氛围两个部分,一个是前端,一个是后端,通俗来讲,就是把前端的语言经过编译器编译成为可以在后端上运行的语言。

语言翻译T形图

我们实现QBDF是比较有意思,我们前端和后端都算是OC,同时实现语言也是OC,也就是说我们用OC语言实现了一个能把OC语言运行在OC上的程序。比较绕,但是确实是这个样子,这个过程非常像编译原理的自举这个概念。为了快速实现整个框架,我们采用了最小化的设计,剔除掉了部分不重要的部分,同时利用了高级语言的特性。比如表达式解析这块,加减乘除,三目表达式,自增,自减少,这种操作其实OC是有的,我们没有必要像汇编那样翻译成基本指令,后面我会说到,其实整个表达式都是利用树形结构进行处理的。下面是一个和一般编译程序的对比图对比图:

QBDF和一般编译程序的对比图

可以看到我把代码优化这个步骤去掉了,这个部分并不是必须的,因为我们的框架知识内部用于动态化开发,所以没有必要完全按照一般编译程序结构设计。代码优化这个部分完全可以由程序员自己去保证。也就说下面的代码QBDF是会真正执行1000次的,同时也会进行符号表的入栈和出栈操作。

for(int i=0;i<1000;i++){

//nothing

}

好了,以上就是QBDF的一个整体架构设计和实现思路,下面我们放一个QBDF的脚本和中间代码大家感受下。

QBDF整个解释器的总体技术设计是这个样子的。

QBDF解释器的技术组成

QBDF脚本如下。

@interface qbdfsubCell : UIView

@end

@implementation qbdfsubCell

- (id)initWithFrame:(CGRect)frame

{

    self= [superinitWithFrame:frame];

    if(self)

    {

        [selfsetBackgroundColor:[UIColor purpleColor]];

        idlabel = [[UILabel alloc] initWithFrame:CGRectMake(0,self.bounds.size.height -35,self.bounds.size.width,20)];

        label.font = [UIFont systemFontOfSize:20];

        label.textColor =[UIColor blackColor];

        label.text =@"短视频A";

        [selfsetQBDFProp:label forKey:@"namelabel"];

        [selfaddSubview:label];

        idlabelB = [[UILabel alloc] initWithFrame:CGRectMake(0,self.bounds.size.height -15,self.bounds.size.width,15)];

        labelB.font = [UIFont systemFontOfSize:15];

        labelB.textColor =[UIColor blackColor];

        labelB.text =@"详细信息,详细信息";

        [selfsetQBDFProp:labelB forKey:@"contentlabel"];

        [selfaddSubview:labelB];

        idimageView = [[UIImageView alloc] initWithFrame:CGRectMake(0,0,self.bounds.size.width,self.bounds.size.height -35)];

        imageView.backgroundColor = [UIColor whiteColor];

        [selfaddSubview:imageView];

        [selfsetQBDFProp:imageView forKey:@"imageView"];

        void(^blockA)()

        {

            iddata = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://pic1.nipic.com/2009-02-09/200929180899_2.jpg"]];

            idimage = [UIImage imageWithData:data];

            void(^blockB)()

            {

                imageView.image = image;

            }

            dispatch_async_main(blockB);

        }

        dispatch_async_global_queue(blockA);

    }

    return self;

}

@end

idsubcell = [[qbdfsubCell alloc] initWithFrame:baseView.bounds];

[baseView addSubview:subcell];

对应中间代码(已解压缩)

[

  {

    "5001" : "qbdfsubCell",

    "1002" : "9010",

    "5004" : [

    ],

    "5002" : "UIView",

    "1001" : 0,

    "5003" : [

    ]

  },

  {

    "1002" : "9011",

    "5009" : "qbdfsubCell",

    "5010" : [

      {

        "5013" : [

          {

            "3006" : "",

            "3005" : "4019",

            "3007" : "frame"

          }

        ],

        "5011" : "initWithFrame:",

        "5014" : false,

        "5012" : {

          "3009" : "",

          "3008" : "4023"

        },

        "5015" : [

          {

            "1001" : 0,

            "2001" : {

              "2014" : {

                "2015" : [

                  {

                    "2010" : "4027",

                    "2008" : "2016",

                    "2013" : "frame",

                    "2002" : "2004",

                    "2009" : ""

                  }

                ],

                "2013" : {

                  "2010" : "4027",

                  "2008" : "2016",

                  "2013" : "super",

                  "2002" : "2004",

                  "2009" : ""

                },

                "2002" : "2006",

                "2014" : "initWithFrame:"

              },

              "2013" : {

                "2010" : "4027",

                "2008" : "2016",

                "2013" : "self",

                "2002" : "2004",

                "2009" : ""

              },

              "2002" : "2003",

              "2007" : 148

            },

            "1002" : "9002"

          },

          {

            "1002" : "9002",

            "2001" : {

              "2010" : "4027",

              "2008" : "2016",

              "2013" : "self",

              "2002" : "2004",

              "2009" : ""

            },

            "2011" : 1,

            "1001" : 1

          },

          {

            "1001" : 2,

            "1002" : "9003",

            "1009" : 27,

            "1008" : -1,

            "1011" : "IF-OUT"

          },

          {

            "1001" : 3,

            "1011" : "IF-ENT",

            "1002" : "9007"

          },

          {

            "1001" : 4,

            "2001" : {

              "2015" : [

                {

                  "2015" : [

                  ],

                  "2013" : {

                    "2010" : "4027",

                    "2008" : "2016",

                    "2013" : "UIColor",

                    "2002" : "2004",

                    "2009" : ""

                  },

                  "2002" : "2006",

                  "2014" : "purpleColor"

                }

              ],

              "2013" : {

                "2010" : "4027",

                "2008" : "2016",

                "2013" : "self",

                "2002" : "2004",

                "2009" : ""

              },

              "2002" : "2006",

              "2014" : "setBackgroundColor:"

            },

            "1002" : "9002"

          },

          {

            "1002" : "9001",

            "1007" : "label",

            "1005" : "4023",

            "1001" : 5,

            "1006" : ""

          },

          {

            "1001" : 6,

            "2001" : {

              "2014" : {

                "2015" : [

                  {

                    "2002" : "2005",

                    "2013" : "CGRectMake",

                    "2014" : [

                      {

                        "2010" : "",

                        "2008" : "2017",

                        "2013" : 0,

                        "2002" : "2004",

                        "2009" : "4009"

                      },

                      {

                        "2014" : {

                          "2010" : "",

                          "2008" : "2017",

                          "2013" : 35,

                          "2002" : "2004",

                          "2009" : "4009"

                        },

                        "2013" : {

                          "2014" : "height",

                          "2013" : {

                            "2014" : "size",

                            "2013" : {

                              "2014" : "bounds",

                              "2013" : {

                                "2010" : "4027",

                                "2008" : "2016",

                                "2013" : "self",

                                "2002" : "2004",

                                "2009" : ""

                              },

                              "2002" : "2003",

                              "2007" : 46

                            },

                            "2002" : "2003",

                            "2007" : 46

                          },

                          "2002" : "2003",

                          "2007" : 46

                        },

                        "2002" : "2003",

                        "2007" : 130

                      },

                      {

                        "2014" : "width",

                        "2013" : {

                          "2014" : "size",

                          "2013" : {

                            "2014" : "bounds",

                            "2013" : {

                              "2010" : "4027",

                              "2008" : "2016",

                              "2013" : "self",

                              "2002" : "2004",

                              "2009" : ""

                            },

                            "2002" : "2003",

                            "2007" : 46

                          },

                          "2002" : "2003",

                          "2007" : 46

                        },

                        "2002" : "2003",

                        "2007" : 46

                      },

                      {

                        "2010" : "",

                        "2008" : "2017",

                        "2013" : 20,

                        "2002" : "2004",

                        "2009" : "4009"

                      }

                    ]

                  }

                ],

                "2013" : {

                  "2015" : [

                  ],

                  "2013" : {

                    "2010" : "4027",

                    "2008" : "2016",

                    "2013" : "UILabel",

                    "2002" : "2004",

                    "2009" : ""

                  },

                  "2002" : "2006",

                  "2014" : "alloc"

                },

                "2002" : "2006",

                "2014" : "initWithFrame:"

              },

              "2013" : {

                "2010" : "4027",

                "2008" : "2016",

                "2013" : "label",

                "2002" : "2004",

                "2009" : ""

              },

              "2002" : "2003",

              "2007" : 148

            },

            "1002" : "9002"

          },

          {

            "1001" : 7,

            "2001" : {

              "2014" : {

                "2015" : [

                  {

                    "2010" : "",

                    "2008" : "2017",

                    "2013" : 20,

                    "2002" : "2004",

                    "2009" : "4009"

                  }

                ],

                "2013" : {

                  "2010" : "4027",

                  "2008" : "2016",

                  "2013" : "UIFont",

                  "2002" : "2004",

                  "2009" : ""

                },

                "2002" : "2006",

                "2014" : "systemFontOfSize:"

              },

              "2013" : {

                "2014" : "font",

                "2013" : {

                  "2010" : "4027",

                  "2008" : "2016",

                  "2013" : "label",

                  "2002" : "2004",

                  "2009" : ""

                },

                "2002" : "2003",

                "2007" : 46

              },

              "2002" : "2003",

              "2007" : 148

            },

            "1002" : "9002"

          },

          {

            "1001" : 8,

            "2001" : {

              "2014" : {

                "2015" : [

                ],

                "2013" : {

                  "2010" : "4027",

                  "2008" : "2016",

                  "2013" : "UIColor",

                  "2002" : "2004",

                  "2009" : ""

                },

                "2002" : "2006",

                "2014" : "blackColor"

              },

              "2013" : {

                "2014" : "textColor",

                "2013" : {

                  "2010" : "4027",

                  "2008" : "2016",

                  "2013" : "label",

                  "2002" : "2004",

                  "2009" : ""

                },

                "2002" : "2003",

                "2007" : 46

              },

              "2002" : "2003",

              "2007" : 148

            },

            "1002" : "9002"

          },

          {

            "1001" : 9,

            "2001" : {

              "2014" : {

                "2010" : "",

                "2008" : "2017",

                "2013" : "短视频A",

                "2002" : "2004",

                "2009" : "4023"

              },

              "2013" : {

                "2014" : "text",

                "2013" : {

                  "2010" : "4027",

                  "2008" : "2016",

                  "2013" : "label",

                  "2002" : "2004",

                  "2009" : ""

                },

                "2002" : "2003",

                "2007" : 46

              },

              "2002" : "2003",

              "2007" : 148

            },

            "1002" : "9002"

          },

          {

            "1001" : 10,

            "2001" : {

              "2015" : [

                {

                  "2010" : "4027",

                  "2008" : "2016",

                  "2013" : "label",

                  "2002" : "2004",

                  "2009" : ""

                },

                {

                  "2010" : "",

                  "2008" : "2017",

                  "2013" : "namelabel",

                  "2002" : "2004",

                  "2009" : "4023"

                }

              ],

              "2013" : {

                "2010" : "4027",

                "2008" : "2016",

                "2013" : "self",

                "2002" : "2004",

                "2009" : ""

              },

              "2002" : "2006",

              "2014" : "setQBDFProp:forKey:"

            },

            "1002" : "9002"

          },

          {

            "1001" : 11,

            "2001" : {

              "2015" : [

                {

                  "2010" : "4027",

                  "2008" : "2016",

                  "2013" : "label",

                  "2002" : "2004",

                  "2009" : ""

                }

              ],

              "2013" : {

                "2010" : "4027",

                "2008" : "2016",

                "2013" : "self",

                "2002" : "2004",

                "2009" : ""

              },

              "2002" : "2006",

              "2014" : "addSubview:"

            },

            "1002" : "9002"

          },

          {

            "1002" : "9001",

            "1007" : "labelB",

            "1005" : "4023",

            "1001" : 12,

            "1006" : ""

          },

          {

            "1001" : 13,

            "2001" : {

              "2014" : {

                "2015" : [

                  {

                    "2002" : "2005",

                    "2013" : "CGRectMake",

                    "2014" : [

                      {

                        "2010" : "",

                        "2008" : "2017",

                        "2013" : 0,

                        "2002" : "2004",

                        "2009" : "4009"

                      },

                      {

                        "2014" : {

                          "2010" : "",

                          "2008" : "2017",

                          "2013" : 15,

                          "2002" : "2004",

                          "2009" : "4009"

                        },

                        "2013" : {

                          "2014" : "height",

                          "2013" : {

                            "2014" : "size",

                            "2013" : {

                              "2014" : "bounds",

                              "2013" : {

                                "2010" : "4027",

                                "2008" : "2016",

                                "2013" : "self",

                                "2002" : "2004",

                                "2009" : ""

                              },

                              "2002" : "2003",

                              "2007" : 46

                            },

                            "2002" : "2003",

                            "2007" : 46

                          },

                          "2002" : "2003",

                          "2007" : 46

                        },

                        "2002" : "2003",

                        "2007" : 130

                      },

                      {

                        "2014" : "width",

                        "2013" : {

                          "2014" : "size",

                          "2013" : {

                            "2014" : "bounds",

                            "2013" : {

                              "2010" : "4027",

                              "2008" : "2016",

                              "2013" : "self",

                              "2002" : "2004",

                              "2009" : ""

                            },

                            "2002" : "2003",

                            "2007" : 46

                          },

                          "2002" : "2003",

                          "2007" : 46

                        },

                        "2002" : "2003",

                        "2007" : 46

                      },

                      {

                        "2010" : "",

                        "2008" : "2017",

                        "2013" : 15,

                        "2002" : "2004",

                        "2009" : "4009"

                      }

                    ]

                  }

                ],

                "2013" : {

                  "2015" : [

                  ],

                  "2013" : {

                    "2010" : "4027",

                    "2008" : "2016",

                    "2013" : "UILabel",

                    "2002" : "2004",

                    "2009" : ""

                  },

                  "2002" : "2006",

                  "2014" : "alloc"

                },

                "2002" : "2006",

                "2014" : "initWithFrame:"

              },

              "2013" : {

                "2010" : "4027",

                "2008" : "2016",

                "2013" : "labelB",

                "2002" : "2004",

                "2009" : ""

              },

              "2002" : "2003",

              "2007" : 148

            },

            "1002" : "9002"

          },

          {

            "1001" : 14,

            "2001" : {

              "2014" : {

                "2015" : [

                  {

                    "2010" : "",

                    "2008" : "2017",

                    "2013" : 15,

                    "2002" : "2004",

                    "2009" : "4009"

                  }

                ],

                "2013" : {

                  "2010" : "4027",

                  "2008" : "2016",

                  "2013" : "UIFont",

                  "2002" : "2004",

                  "2009" : ""

                },

                "2002" : "2006",

                "2014" : "systemFontOfSize:"

              },

              "2013" : {

                "2014" : "font",

                "2013" : {

                  "2010" : "4027",

                  "2008" : "2016",

                  "2013" : "labelB",

                  "2002" : "2004",

                  "2009" : ""

                },

                "2002" : "2003",

                "2007" : 46

              },

              "2002" : "2003",

              "2007" : 148

            },

            "1002" : "9002"

          },

          {

            "1001" : 15,

            "2001" : {

              "2014" : {

                "2015" : [

                ],

                "2013" : {

                  "2010" : "4027",

                  "2008" : "2016",

                  "2013" : "UIColor",

                  "2002" : "2004",

                  "2009" : ""

                },

                "2002" : "2006",

                "2014" : "blackColor"

              },

              "2013" : {

                "2014" : "textColor",

                "2013" : {

                  "2010" : "4027",

                  "2008" : "2016",

                  "2013" : "labelB",

                  "2002" : "2004",

                  "2009" : ""

                },

                "2002" : "2003",

                "2007" : 46

              },

              "2002" : "2003",

              "2007" : 148

            },

            "1002" : "9002"

          },

          {

            "1001" : 16,

            "2001" : {

              "2014" : {

                "2010" : "",

                "2008" : "2017",

                "2013" : "详细信息,详细信息",

                "2002" : "2004",

                "2009" : "4023"

              },

              "2013" : {

                "2014" : "text",

                "2013" : {

                  "2010" : "4027",

                  "2008" : "2016",

                  "2013" : "labelB",

                  "2002" : "2004",

                  "2009" : ""

                },

                "2002" : "2003",

                "2007" : 46

              },

              "2002" : "2003",

              "2007" : 148

            },

            "1002" : "9002"

          },

          {

            "1001" : 17,

            "2001" : {

              "2015" : [

                {

                  "2010" : "4027",

                  "2008" : "2016",

                  "2013" : "labelB",

                  "2002" : "2004",

                  "2009" : ""

                },

                {

                  "2010" : "",

                  "2008" : "2017",

                  "2013" : "contentlabel",

                  "2002" : "2004",

                  "2009" : "4023"

                }

              ],

              "2013" : {

                "2010" : "4027",

                "2008" : "2016",

                "2013" : "self",

                "2002" : "2004",

                "2009" : ""

              },

              "2002" : "2006",

              "2014" : "setQBDFProp:forKey:"

            },

            "1002" : "9002"

          },

          {

            "1001" : 18,

            "2001" : {

              "2015" : [

                {

                  "2010" : "4027",

                  "2008" : "2016",

                  "2013" : "labelB",

                  "2002" : "2004",

                  "2009" : ""

                }

              ],

              "2013" : {

                "2010" : "4027",

                "2008" : "2016",

                "2013" : "self",

                "2002" : "2004",

                "2009" : ""

              },

              "2002" : "2006",

              "2014" : "addSubview:"

            },

            "1002" : "9002"

          },

          {

            "1002" : "9001",

            "1007" : "imageView",

            "1005" : "4023",

            "1001" : 19,

            "1006" : ""

          },

          {

            "1001" : 20,

            "2001" : {

              "2014" : {

                "2015" : [

                  {

                    "2002" : "2005",

                    "2013" : "CGRectMake",

                    "2014" : [

                      {

                        "2010" : "",

                        "2008" : "2017",

                        "2013" : 0,

                        "2002" : "2004",

                        "2009" : "4009"

                      },

                      {

                        "2010" : "",

                        "2008" : "2017",

                        "2013" : 0,

                        "2002" : "2004",

                        "2009" : "4009"

                      },

                      {

                        "2014" : "width",

                        "2013" : {

                          "2014" : "size",

                          "2013" : {

                            "2014" : "bounds",

                            "2013" : {

                              "2010" : "4027",

                              "2008" : "2016",

                              "2013" : "self",

                              "2002" : "2004",

                              "2009" : ""

                            },

                            "2002" : "2003",

                            "2007" : 46

                          },

                          "2002" : "2003",

                          "2007" : 46

                        },

                        "2002" : "2003",

                        "2007" : 46

                      },

                      {

                        "2014" : {

                          "2010" : "",

                          "2008" : "2017",

                          "2013" : 35,

                          "2002" : "2004",

                          "2009" : "4009"

                        },

                        "2013" : {

                          "2014" : "height",

                          "2013" : {

                            "2014" : "size",

                            "2013" : {

                              "2014" : "bounds",

                              "2013" : {

                                "2010" : "4027",

                                "2008" : "2016",

                                "2013" : "self",

                                "2002" : "2004",

                                "2009" : ""

                              },

                              "2002" : "2003",

                              "2007" : 46

                            },

                            "2002" : "2003",

                            "2007" : 46

                          },

                          "2002" : "2003",

                          "2007" : 46

                        },

                        "2002" : "2003",

                        "2007" : 130

                      }

                    ]

                  }

                ],

                "2013" : {

                  "2015" : [

                  ],

                  "2013" : {

                    "2010" : "4027",

                    "2008" : "2016",

                    "2013" : "UIImageView",

                    "2002" : "2004",

                    "2009" : ""

                  },

                  "2002" : "2006",

                  "2014" : "alloc"

                },

                "2002" : "2006",

                "2014" : "initWithFrame:"

              },

              "2013" : {

                "2010" : "4027",

                "2008" : "2016",

                "2013" : "imageView",

                "2002" : "2004",

                "2009" : ""

              },

              "2002" : "2003",

              "2007" : 148

            },

            "1002" : "9002"

          },

          {

            "1001" : 21,

            "2001" : {

              "2014" : {

                "2015" : [

                ],

                "2013" : {

                  "2010" : "4027",

                  "2008" : "2016",

                  "2013" : "UIColor",

                  "2002" : "2004",

                  "2009" : ""

                },

                "2002" : "2006",

                "2014" : "whiteColor"

              },

              "2013" : {

                "2014" : "backgroundColor",

                "2013" : {

                  "2010" : "4027",

                  "2008" : "2016",

                  "2013" : "imageView",

                  "2002" : "2004",

                  "2009" : ""

                },

                "2002" : "2003",

                "2007" : 46

              },

              "2002" : "2003",

              "2007" : 148

            },

            "1002" : "9002"

          },

          {

            "1001" : 22,

            "2001" : {

              "2015" : [

                {

                  "2010" : "4027",

                  "2008" : "2016",

                  "2013" : "imageView",

                  "2002" : "2004",

                  "2009" : ""

                }

              ],

              "2013" : {

                "2010" : "4027",

                "2008" : "2016",

                "2013" : "self",

                "2002" : "2004",

                "2009" : ""

              },

              "2002" : "2006",

              "2014" : "addSubview:"

            },

            "1002" : "9002"

          },

          {

            "1001" : 23,

            "2001" : {

              "2015" : [

                {

                  "2010" : "4027",

                  "2008" : "2016",

                  "2013" : "imageView",

                  "2002" : "2004",

                  "2009" : ""

                },

                {

                  "2010" : "",

                  "2008" : "2017",

                  "2013" : "imageView",

                  "2002" : "2004",

                  "2009" : "4023"

                }

              ],

              "2013" : {

                "2010" : "4027",

                "2008" : "2016",

                "2013" : "self",

                "2002" : "2004",

                "2009" : ""

              },

              "2002" : "2006",

              "2014" : "setQBDFProp:forKey:"

            },

            "1002" : "9002"

          },

          {

            "1001" : 24,

            "3004" : "blockA",

            "1002" : "9009",

            "3002" : {

              "3009" : "",

              "3008" : "4017"

            },

            "3003" : [

              {

                "1002" : "9001",

                "1007" : "data",

                "1005" : "4023",

                "1001" : 0,

                "1006" : ""

              },

              {

                "1001" : 1,

                "2001" : {

                  "2014" : {

                    "2015" : [

                      {

                        "2015" : [

                          {

                            "2010" : "",

                            "2008" : "2017",

                            "2013" : "http:\/\/pic1.nipic.com\/2009-02-09\/200929180899_2.jpg",

                            "2002" : "2004",

                            "2009" : "4023"

                          }

                        ],

                        "2013" : {

                          "2010" : "4027",

                          "2008" : "2016",

                          "2013" : "NSURL",

                          "2002" : "2004",

                          "2009" : ""

                        },

                        "2002" : "2006",

                        "2014" : "URLWithString:"

                      }

                    ],

                    "2013" : {

                      "2010" : "4027",

                      "2008" : "2016",

                      "2013" : "NSData",

                      "2002" : "2004",

                      "2009" : ""

                    },

                    "2002" : "2006",

                    "2014" : "dataWithContentsOfURL:"

                  },

                  "2013" : {

                    "2010" : "4027",

                    "2008" : "2016",

                    "2013" : "data",

                    "2002" : "2004",

                    "2009" : ""

                  },

                  "2002" : "2003",

                  "2007" : 148

                },

                "1002" : "9002"

              },

              {

                "1002" : "9001",

                "1007" : "image",

                "1005" : "4023",

                "1001" : 2,

                "1006" : ""

              },

              {

                "1001" : 3,

                "2001" : {

                  "2014" : {

                    "2015" : [

                      {

                        "2010" : "4027",

                        "2008" : "2016",

                        "2013" : "data",

                        "2002" : "2004",

                        "2009" : ""

                      }

                    ],

                    "2013" : {

                      "2010" : "4027",

                      "2008" : "2016",

                      "2013" : "UIImage",

                      "2002" : "2004",

                      "2009" : ""

                    },

                    "2002" : "2006",

                    "2014" : "imageWithData:"

                  },

                  "2013" : {

                    "2010" : "4027",

                    "2008" : "2016",

                    "2013" : "image",

                    "2002" : "2004",

                    "2009" : ""

                  },

                  "2002" : "2003",

                  "2007" : 148

                },

                "1002" : "9002"

              },

              {

                "1001" : 4,

                "3004" : "blockB",

                "1002" : "9009",

                "3002" : {

                  "3009" : "",

                  "3008" : "4017"

                },

                "3003" : [

                  {

                    "1001" : 0,

                    "2001" : {

                      "2014" : {

                        "2010" : "4027",

                        "2008" : "2016",

                        "2013" : "image",

                        "2002" : "2004",

                        "2009" : ""

                      },

                      "2013" : {

                        "2014" : "image",

                        "2013" : {

                          "2010" : "4027",

                          "2008" : "2016",

                          "2013" : "imageView",

                          "2002" : "2004",

                          "2009" : ""

                        },

                        "2002" : "2003",

                        "2007" : 46

                      },

                      "2002" : "2003",

                      "2007" : 148

                    },

                    "1002" : "9002"

                  }

                ],

                "3001" : [

                ]

              },

              {

                "1001" : 5,

                "2001" : {

                  "2002" : "2005",

                  "2013" : "dispatch_async_main",

                  "2014" : [

                    {

                      "2010" : "4027",

                      "2008" : "2016",

                      "2013" : "blockB",

                      "2002" : "2004",

                      "2009" : ""

                    }

                  ]

                },

                "1002" : "9002"

              }

            ],

            "3001" : [

            ]

          },

          {

            "1001" : 25,

            "2001" : {

              "2002" : "2005",

              "2013" : "dispatch_async_global_queue",

              "2014" : [

                {

                  "2010" : "4027",

                  "2008" : "2016",

                  "2013" : "blockA",

                  "2002" : "2004",

                  "2009" : ""

                }

              ]

            },

            "1002" : "9002"

          },

          {

            "1001" : 26,

            "1011" : "IF-LEV",

            "1002" : "9008"

          },

          {

            "1002" : "9002",

            "2001" : {

              "2010" : "4027",

              "2008" : "2016",

              "2013" : "self",

              "2002" : "2004",

              "2009" : ""

            },

            "2011" : 1,

            "1001" : 27

          },

          {

            "1001" : 28,

            "2018" : -1,

            "1002" : "9006"

          }

        ]

      }

    ],

    "1001" : 1

  },

  {

    "1002" : "9001",

    "1007" : "subcell",

    "1005" : "4023",

    "1001" : 2,

    "1006" : ""

  },

  {

    "1001" : 3,

    "2001" : {

      "2014" : {

        "2015" : [

          {

            "2014" : "bounds",

            "2013" : {

              "2010" : "4027",

              "2008" : "2016",

              "2013" : "baseView",

              "2002" : "2004",

              "2009" : ""

            },

            "2002" : "2003",

            "2007" : 46

          }

        ],

        "2013" : {

          "2015" : [

          ],

          "2013" : {

            "2010" : "4027",

            "2008" : "2016",

            "2013" : "qbdfsubCell",

            "2002" : "2004",

            "2009" : ""

          },

          "2002" : "2006",

          "2014" : "alloc"

        },

        "2002" : "2006",

        "2014" : "initWithFrame:"

      },

      "2013" : {

        "2010" : "4027",

        "2008" : "2016",

        "2013" : "subcell",

        "2002" : "2004",

        "2009" : ""

      },

      "2002" : "2003",

      "2007" : 148

    },

    "1002" : "9002"

  },

  {

    "1001" : 4,

    "2001" : {

      "2015" : [

        {

          "2010" : "4027",

          "2008" : "2016",

          "2013" : "subcell",

          "2002" : "2004",

          "2009" : ""

        }

      ],

      "2013" : {

        "2010" : "4027",

        "2008" : "2016",

        "2013" : "baseView",

        "2002" : "2004",

        "2009" : ""

      },

      "2002" : "2006",

      "2014" : "addSubview:"

    },

    "1002" : "9002"

  },

  {

    "1001" : 5,

    "1002" : "9005"

  }

]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值