自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

利用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內容的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.滑動圖片,然后點擊暫停按鈕結束事件的記錄。

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

在這里能看到什么?

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

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

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

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

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

    ①創(chuàng)建

    ②添加到窗口

    ③常量修正

    ④標識符改變

    ⑤從窗口移除

 

img-eventlist-annotated.png

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

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

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

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

0133.png

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

其他控制盤和按鈕

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

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

014.png

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

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

017.png

修改時間軸的風格

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

402.png

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

透過表象看本質

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

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

2011-08-11 15:46:55

CocoaCocoa Touch框架

2010-09-10 09:22:50

DIV布局

2011-08-10 18:37:32

CocoaMac OS X

2011-05-11 15:27:58

Windows OOPCocoa MVCCocoa

2017-02-28 10:05:56

Chrome源碼

2011-07-07 13:51:24

Cocoa 框架

2011-07-07 13:39:14

Cocoa 框架

2011-04-18 09:35:59

ASP.NET MVC

2011-07-07 13:30:32

Cocoa Core

2023-10-30 09:18:28

CSSColumns布局

2021-09-17 06:55:50

AndroidLayoutView

2020-09-17 11:12:03

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

2011-07-07 14:22:27

Cocoa 對象 生命周期

2011-07-07 13:59:49

Cocoa Objective- 根類

2017-01-19 21:54:10

iOS布局框架Masonry

2011-06-17 16:23:49

Cocoa蘋果

2011-08-10 18:47:18

Cocoa字符串

2017-09-08 16:12:34

視口單位適配布局

2011-07-26 10:42:00

Cocoa Cocoa2d 游戲

2017-12-17 21:58:18

點贊
收藏

51CTO技術棧公眾號