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"
? }
]
總結
以上是生活随笔為你收集整理的QQ浏览器HD的动态化方案QBDF的总体架构设计(2)【简书被冻结-搬运】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python车牌识别系统抬杆_【小区停车
- 下一篇: 浏览器怎么解析css和html,浏览器解