成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

利用Cocoa Layout Instrument檢視自動布局

移動開發(fā)
前段時間,MarkD跟我們探討了Instruments里面很多有用的診斷工具,比如TimeProfiler和Energy Diagnostics template。同理,在這里我將提供一個Cocoa布局工具(CocoaLayoutInstrument)的綜述。

前段時間,MarkD跟我們探討了Instruments里面很多有用的診斷工具,比如TimeProfilerEnergy Diagnostics template。同理,在這里我將提供一個Cocoa布局工具(CocoaLayoutInstrument)的綜述。

[[154997]]

為了有助于探索,這里我創(chuàng)建了一個簡單的示例。這是一個利用AutoLayout來布局UICollectionView以及其UICollectionViewCell內(nèi)容的iPhone應用。這里下載帶有跟蹤輸出的示例工程,下面開始。

CocoaLayoutInstrument可以應用于iOS模擬器和Cocoa桌面應用,但是不能和連接的iOS設備一起使用。CocoaLayoutInstrument提供了一個與NSLayoutConstraint類的實例有關的所有事件的時間軸,這一點和回溯(backtrace)很像。蘋果在AnalysisTools相關的文檔中介紹了該工具。

怎樣啟動Instrument?

執(zhí)行下面的步驟,開啟CocoaLayoutInstrument

1.打開示例工程

2.選擇Product>Profile(快捷鍵01.png)

3.選擇Cocoa布局模板

4.Instruments窗口將會顯示出來并且為暫停狀態(tài),點擊左上角紅色的記錄按鈕(022.png)

5.滑動圖片,然后點擊暫停按鈕結(jié)束事件的記錄。

在這篇文章的余下部分中,為了instructions和結(jié)果適配,我將使用我提供的回溯。跟我一樣的話,請打開cocoa-layout-instrument.trace文件。

在這里能看到什么?

時間軸下面的行所列出的一連串事件詳情,如下圖所示,統(tǒng)稱為NSLayoutConstraint對象的影響。所有的影響事件都按時間順序列出,***的事件在***部。每個事件包含了以下信息:

  • Caller:哪一個類和方法觸發(fā)了一個約束的改變

  • Constraint:這一欄是回溯(trace)真正的血肉組成。通過約束(Constraint)的內(nèi)存地址或者通過標識符屬性(如果可用的話),你能夠辨別出哪個約束被影響了。Constraint欄也包含了VFL字符串,這個字符串闡述了坐標軸所對應的約束線和約束定義的關系。

  • Constant:定義約束的常量值。

  • Event:詳細說明某個約束被加載了什么樣的操作。這個約束可能被創(chuàng)建,移除,或者添加到window上面了,或者屬性例如標識符(identifier)被修改或者移除了。這些改變事件包括:

    ①創(chuàng)建

    ②添加到窗口

    ③常量修正

    ④標識符改變

    ⑤從窗口移除

 

img-eventlist-annotated.png

過濾過的事件列表和時間軸

首先,過濾列表,獲取你感興趣的內(nèi)容。在右上角文本框標出記錄的數(shù)據(jù)(RecordedData),鍵入0x7ff4e948dce0和0x7ff4e948d6e0。當然你的內(nèi)存地址會不同,這里使用你看到的地址。有趣的是,這個文本框只過濾VFL字符串和內(nèi)存地址。

現(xiàn)在的列表是這些我們想要的約束,讓我們看一下列表的***個事件,從第0行開始,(_:attribute:relatedBy:toItem:attribute:multiplier:constant:)方法創(chuàng)建了一個約束。在列表的約束行,你可以看到構(gòu)成這個約束的關系(relationship)和屬性(attributes),UILabel:0x7ff4e948dce0.leading==UIImageView:0x7ff4e948d6e0.leading.意思是,這個UILabel的對象頂邊和這個UIImageView的頂邊相等。在實現(xiàn)部分,隨著這個約束的創(chuàng)建,它的標識符屬性馬上會被設定。回溯里面輸出的記錄是一個事件:標識符屬性變?yōu)閟ubtitleLeadingConstraint。

除了通過內(nèi)存地址或者約束值來過濾之外,你還可以關注事件的一個子集。點擊水平拖動時間表至頂部,來指定事件的一個特定的時間范圍,如上圖所示。和其他的工具集類似,你會發(fā)現(xiàn)拖動左邊的追蹤范圍滑塊來放大堆棧深度(StackDepth),以一窺時間軸上更細時間尺度的事件。

0133.png

向右拖動回溯的比例滑塊進一步觀察

其他控制盤和按鈕

讓我們看看這個工具提供的幾個附加配置。

為了改變時間軸上事件的可視化呈現(xiàn),打開記錄設置面板(016.png),勾選StatisticstoGraph下面的StackDepth選項:

014.png

記錄設置面板里時間軸的相關可選配置

例如,改變時間軸的可視風格:

017.png

修改時間軸的風格

對于一個給定的事件,你也可以查看所有導致該事件的堆棧跟蹤信息。首先,選定某個事件,然后打開詳情擴展(ExtendedDetail)面板(?-3)。在工具集窗口的右面板部分,呈現(xiàn)的是這個特定事件的堆棧追蹤信息。

402.png

一個自動布局事件的堆棧追蹤信息

透過表象看本質(zhì)

Instruments的價值在于,它使我們深刻理解我們代碼的內(nèi)部運作。CocoaLayoutInstrument擴展了這一點用于自動布局,提供了與某個接口的生命周期有關的每一個步驟的豐富細節(jié)。

責任編輯:倪明 來源: bignerdranch
相關推薦

2011-08-11 15:46:55

CocoaCocoa Touch框架

2011-08-10 18:37:32

CocoaMac OS X

2011-07-07 13:51:24

Cocoa 框架

2011-05-11 15:27:58

Windows OOPCocoa MVCCocoa

2010-09-10 09:22:50

DIV布局

2011-07-07 13:39:14

Cocoa 框架

2017-02-28 10:05:56

Chrome源碼

2011-07-07 13:30:32

Cocoa Core

2011-04-18 09:35:59

ASP.NET MVC

2011-07-07 13:59:49

Cocoa Objective- 根類

2011-07-07 14:22:27

Cocoa 對象 生命周期

2023-10-30 09:18:28

CSSColumns布局

2020-09-17 11:12:03

分布式系統(tǒng)代碼檢代碼檢視

2021-09-17 06:55:50

AndroidLayoutView

2011-07-08 16:43:46

iPhone Cocoa 多線程

2011-07-08 18:03:30

Cocoa Touch 網(wǎng)絡

2011-08-10 18:13:01

Cocoa文字字符串

2011-05-11 10:28:03

2011-07-26 10:42:00

Cocoa Cocoa2d 游戲

2011-08-10 18:47:18

Cocoa字符串
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩波多野结衣 | 夜久久 | 中文字幕日韩一区 | 午夜成人在线视频 | 亚洲视频区 | 国产一区二区三区日韩 | 日本黄色一级视频 | 亚洲成av人片在线观看 | 国内精品99 | 精品久久久久久久久久久久久久 | 亚洲二区在线 | 国产精品久久久久久久久久免费 | 精品久久一区二区三区 | 罗宾被扒开腿做同人网站 | h在线看| 欧美1区2区| 亚洲区一| 亚洲精品福利在线 | 逼逼视频| 给我免费的视频在线观看 | 精品国产欧美一区二区三区成人 | 亚洲精品99| 精品国产精品三级精品av网址 | 国产专区在线 | av毛片免费 | 丝袜美腿一区二区三区 | 日韩在线免费视频 | 国产精品亚洲片在线播放 | 欧美国产精品 | 日韩视频精品在线 | 手机看片1 | av免费网址 | 视频一区 亚洲 | 一级爱爱片 | 91免费入口| 久久久久久国产精品免费免费男同 | 国产福利免费视频 | 亚洲网站在线观看 | 日本久久www成人免 成人久久久久 | 在线观看中文字幕视频 | 国产日韩精品在线 |