国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Table Views加速的是個開發Tips

移動開發
如果你曾經跟collectionview打過交道,你可能已經意識到了這篇文章的價值。如果你沒有注意速度這將會是一個大問題,你的用戶會讓你了解的。當你的scrollview沒有你設備上的其他app的速度快的時候你將會很快意識到。Table views是每一個iOS初級開發者最先使用到的,也可能很快就陷入困惑。這篇文章將會深入講解一些也許你正在查找的問題。

[[142938]]

在我們開始之前,我準備從今年開始多聽取一個意見。請花一些時間通過這篇簡短的調查給我們一些反饋。這將會幫助我來幫助你。

如果你曾經跟collectionview打過交道,你可能已經意識到了這篇文章的價值。如果你沒有注意速度這將會是一個大問題,你的用戶會讓你了解的。當你的scrollview沒有你設備上的其他app的速度快的時候你將會很快意識到。Table views是每一個iOS初級開發者***使用到的,也可能很快就陷入困惑。這篇文章將會深入講解一些也許你正在查找的問題。

龜兔問題

Table views是一種交互對象,許多app利用它展示結構化的數據。想要很好的利用它是很瑣細的,這使得他們使用起來猶如曲折的冒險。設計者在設計之初不考慮性能的問題。設計者甚至可能是你自己。很快你將會做一個圖片類型的app,它需要在cell上展示許多信息。開始的時候可能很快但是很快就慢的像烏龜一樣。你想讓你的Table views順暢得像一片黃油。你的app的這些使用效果如果不好的話很快就會能夠注意到。

加速你的Table Views

我們會通過一個實際的例子來探索這些小提示,這個例子中的Table views實現得很不好。

通常你會發現一個圖片類的app會在一個imageview上做下面這些事情:

下載圖片(主要的內容圖片+用戶頭像圖片)

更新時間戳

展示評論

計算動態的cell的高度

在這個例子中我們打算集中分析以上幾點內容。

我建議你去克隆下來那個demo的目錄(github)去體驗一下一開始的時候它是多么糟糕。跳到XMCFeedTableViewCell看下它的提升并且感受一下它的性能。如果你在iphone 6+上面運行的話優化感受起來可能不那么好,意識到這點很重要。不要忘了在一臺更舊的設備上體驗一下。

Tip#1 學習怎么提升速度

我可以寫一整篇關于Instruments的文章。在這兒我將給你一個大致的介紹因為這會很有幫助的。

如果你對于Instruments不是很有經驗,我勸你周末花些時間來研究一些。當你想要測量內存與時間消耗,他們會幫你很大的忙。然而當你著手做一個app你將會在開發過程中遇到很多問題,代碼會變得越來越糟,這時你可能還無暇顧及性能的問題。但是重構是潛在的。為了合適的重構你應該花費精力在分析性能上面。

所以,下面是周末探索內容:

1.打開你的項目并點擊Product>Profile

2.在那兒選擇Custom

3.找到添加按鈕并且添加工具:Allocations,Time,Profile,Leaks

4.觀察你的應用,以及他的表現。

例如,我們關心的是速度(但是內存也是一個大問題)。我們需要哪個工具呢?如果你選擇Time Profile那你就對了。讓我們打開它并觀察下運行中的app。

 

下面你就能看到我們的app的概況。你所看到的就是我打開app并且盡我可能快的上下滾動tableview。這就模擬出了一個很好的“最壞情況假設”,然后我們就可以采取行動了。

 

這個區域就是我開始滾動app時會執行的代碼,我們只想知道在這個區域的時間消耗。

現在你可以開始研究我們上面討論的代碼了。雙擊這些行中的任何一行(***是最上面一行,那就是時間被消耗最多的地方)

需要指出很重要的一點,那就是Call Tree下面的選項不是為你在Instruments加載時設置的。你需要自己去設置。

Tip#2 避免阻塞主線程

在這個例子中你會看到***個圖片相關的方法在數據下載并轉換成圖片對象時阻塞了主線程。你要盡量避免阻塞主線程,這對于collection中的交互對象尤為重要。網絡請求?保持他們在后臺運行(異步的)并且緩存傳回的響應。你肯定不想重復處理任何操作。想象你的cell在一段沉默時間內被繪制。你的cell應該只展示已經保存在你的設備上的數據。這會使你感覺更好的。

Tip#3 重用cells

如果你已經花了一些時間學習iOS,那么不好意思 。這條建議是給那些新接觸iOS的同學的。你應該使用dequeueReusableCellWithIdentifier 這個方法去獲取一個table或者collection上面的cell。如果你不是這樣做的,你就浪費了一段無意義的時間和數據。

Tip#4 緩存下載的圖片

這肯定是你在這里讀到的最重要的一條建議了。如果你不緩存圖片你將會遇到很大的問題。

如果你重用本地的圖片那么請使用UIImage的方法imageNamed:。以JPG格式請求圖片將會節省時間和資源。如果你是從服務端獲取圖片那么你就可以獲取所需要的那些圖片( If you’re getting your image from a server you have the luxury of sending the exact image that’s needed.)。 PNG文件在內存中會占用很大一部分空間。如果你對此感覺好奇你可以在示例中將JPG換成PNG來下載一系列的PNG圖片。

使用 SDWebImage 或者 Heneke 來管理圖片。在提供的示例中我就是用的 Heneke,在那之前我沒有聽說過它也沒有聽說過它的好用之處。

Tip#5 使用富文本標簽代價是很昂貴的

費盡周折用富文本標簽,代價太昂貴了。盡可能地避免使用這個。問問你自己是否真的需要這個。如果是的話,盡可能的做緩存。

Tip#6 cell高度計算

如果你的table有復雜的動態高度那么你需要緩存計算的高度。考慮多久計算一次(尤其是對于collection views來說),你希望這些高度都是直接可用的。

Tip#7 NsDateFormatter 的痛苦

就像富文本,如果你頻繁地初始化,date formatter可以引起大量的內存消耗。比較理想的是你的web端為你提供可讀的文字(比起在***的時間計算要容易很多)。如果沒有的話你可以創建一個NSDateFormatter的單例來使用。NSDateFormatter不是線程安全的,但是iOS7以及之后就不再是這樣了。多謝quellish提醒我這一點。

Tip#8 透明度

如果你能避免的話你創建的對象***是不透明的(非透明的,你不能透過它看過去)。如果你有透明的圖片,系統必要要很努力地重繪這些圖片。實際上你可以在模擬器中通過點擊Debug>Clolor Blended Areas來看這些區域的問題

看到紅色的了么,那就意味著這些區域是透明的。當你在跟一個Collectionview打交道時這將是非常耗時。理想的,你想看到整個屏幕都是綠色的。對于你的設計來說那可能是不可行的,但是力求減少你看到的紅色的數量。在示例中你可以看到label延伸到了view的尾部,可以被清除掉。

Tip#9 不要過多使用Xib(如果可以的話使用storyboard)

如果要使用xib就要小心一點。當你加載一個Xib,整個的內容會被加載到內存中(圖片,隱藏的views)。但是這在storyboard中不會發生他只會實例化當前要用的東西。

有一些特殊的場景下使用xib很有意義。比如你可能會要使用一些第三方的框架而他們采用純代碼的方式來寫collection的UI部分。如果你想用xib來創建一個原型cell你可以用xib來做。只是要小心不要過載。

Tip#10 使用CoreGraphics

我很少需要這個,但是當你需要的時候你可以用。使用CoreGraphics并在一個view的drawRect的方法中寫你的UI代碼。

挑戰

誰不喜歡一個好的挑戰?讓我們在這兒來把它保持下來。這周花時間來做下面兩件事。

學習怎么使用Instruments(time profiler, allocations)

通過測試圖片緩存(關掉,打開,觀察)來檢查學習Instruments使用的情況。

https://github.com/mcgraw/dojo-table-performance

問題和回答

還沒有問題!請留下評論或者發送給david@xmcgraw.com。

Takeaway

在iOS中界面的交互很重要。這是不可妥協的。如果你不花時間在穩固你的應用在設備上的體驗,那么人們可能就會離你很遠。當我回顧應用中的內容時應用應該是順暢的。

輪到你了

對于提升性能你的首要建議是什么?我很樂意聽取你的建議。請您有空的時候在下面分享。

責任編輯:chenqingxiang 來源: xmcgraw
相關推薦

2015-07-29 10:11:18

Tableviews加速開發

2011-09-05 09:53:36

CSS

2021-07-27 18:02:01

VueUse 函數開發

2016-08-03 16:27:47

GitLinux開源

2021-11-26 22:51:31

FlaskBlueprintsViews

2021-06-14 09:54:46

框架開發應用程序

2013-07-04 13:19:24

Java開發速度

2021-06-11 18:05:31

App平臺框架

2020-07-21 10:15:15

編程學習技術

2009-08-21 15:40:26

Linux KerneLinux開發加速

2015-06-23 16:47:53

ASP.NET

2020-03-20 09:00:00

CSS框架前端

2018-09-11 09:00:50

工具開發應用程序

2013-07-03 09:52:13

熱部署熱替換

2010-07-28 17:01:35

ADSL加速設置

2009-06-29 10:34:49

網站加速Page SpeedGoogle

2021-02-19 08:11:39

Flink Function接口

2022-05-30 06:30:20

查詢MySQL數據庫

2014-04-17 10:42:50

DevOps
點贊
收藏

51CTO技術棧公眾號

色哟哟国产精品| 国产精品字幕| 欧美一级大片在线观看| 日本a口亚洲| 97国产精品视频| 亚洲欧美日韩另类精品一区二区三区 | 久久99久久久久久久噜噜| 全球av集中精品导航福利| 狠狠色狠色综合曰曰| 欧美高清性xxxxhd| 91丝袜呻吟高潮美腿白嫩在线观看| www免费在线观看视频| 色哟哟亚洲精品一区二区| av在线播放网| 国产精品入口尤物| 亚洲精品中文字幕在线观看| 最新国产精品精品视频| 成年人免费在线播放| 久久精品国产免费| 久久精品国产91精品亚洲| 精品一区视频| 日韩av在线一区二区三区| 欧美日韩成人在线一区| 欧美激情自拍| 高清国产福利在线观看| 懂色av一区二区三区在线播放| 色婷婷精品久久二区二区蜜臀av | 国产女人水真多18毛片18精品 | 欧美亚洲一区二区三区四区| 日本道不卡免费一区| 天堂a√在线| 视频在线观看一区二区| 五月婷婷六月合| 91香蕉视频污| 金瓶狂野欧美性猛交xxxx| 国产福利一区二区三区在线观看| 在线亚洲免费视频| 午夜在线一区二区| 中文字幕高清在线播放| 欧美精品久久久久久久自慰| 精品国产一区二区三区久久久狼 | 91成人福利| 男人靠女人免费视频网站| 久久久久久久久久婷婷| 亚洲国产精品久久不卡毛片 | 色婷婷av一区| 日韩电影在线一区二区三区| 992tv免费直播在线观看| 午夜精品久久久久久久99水蜜桃| 国产一区二区高清视频| 亚洲精品国产无天堂网2021| 国产精品久久久久9999赢消| 在线观看黄av| 超薄肉色丝袜足j调教99| 欧美高清视频在线播放| 狠狠色噜噜狠狠狠狠97| 麻豆精品视频在线| 男人用嘴添女人下身免费视频| 一本久道综合久久精品| 欧美激情导航| 欧美性猛交xxxxxx富婆| 国产欧美日韩一区二区三区在线| 在线观看爽视频| 四虎av网址| 精品视频导航| 久久中文字幕在线视频| 午夜精品123| 黄页网站大全一区二区| 欧美日韩一区二区三区在线电影 | 精品久久久久久久久久久院品网 | 亚洲国产日韩欧美在线图片| 调教视频在线观看| 国产精品理论片在线观看| 国产精品免费入口| 久久午夜国产精品| 欧美综合在线观看视频| 狠狠色丁香婷婷综合| 国产免费一区二区| 国产欧美一级| 伊人久久青草| 国产亚洲欧洲一区高清在线观看| 黄色漫画在线免费观看| 日本精品一级二级| 99久久er| 欧美一级大片在线观看| 久久综合伊人| 狠狠爱免费视频| 日韩欧美在线观看视频| 成人午夜888| 欧美激情一区二区三区在线视频| 中文字幕av一区二区三区高| 新版中文在线官网| 一本色道久久88亚洲综合88| 成人精品久久| aaaaaaa大片免费看| 久久久97精品| 欧美精品国产| 性生活免费在线观看| 亚洲欧美中文在线视频| 亚洲精品久久久| 黄页视频在线观看| 国产精品一二三在线| 亚洲一卡二卡三卡四卡无卡久久| 日本三级久久| 香蕉影院在线| 国产成一区二区| 色综合一个色综合亚洲| 91精品观看| 香蕉成人app免费看片| 日韩免费电影一区二区三区| 亚洲第一级黄色片| 丁香婷婷综合网| www.一区| 免费全黄无遮挡裸体毛片| 日韩在线观看免费高清完整版| 日韩欧美一区二区三区久久| 国产乱码精品1区2区3区| 伊人久久大香线蕉av不卡| 东京一区二区| 午夜av在线免费观看 | 99视频一区二区三区| 久久久久久久国产精品视频| 亚洲嫩模一区| 精品制服美女丁香| 国模精品视频一区二区三区| 久久手机免费观看| 久久99日本精品| 久久免费国产精品1| 欧美精品少妇| 粉嫩一区二区三区在线看 | 日本在线观看免费视频| 影音先锋日韩在线| 亚洲片在线观看| 性综艺节目av在线播放| 视频在线观看国产精品| 欧美放荡办公室videos4k| 国产区高清在线| 国产99久久久久久免费看农村| 国产成一区二区| 97人人在线视频| 中文字幕亚洲在| 欧美不卡三区| 国产厕拍一区| 555www色欧美视频| 男人舔女人下面高潮视频| 国产精品chinese| 久久精品国产欧美亚洲人人爽| 青青草免费观看免费视频在线| 国产精品一区二区久激情瑜伽 | 色婷婷色综合| 国产偷亚洲偷欧美偷精品| 毛片一级免费一级| 男人的天堂久久精品| 人体精品一二三区| 国产精品一二三产区| 亚洲综合色噜噜狠狠| 欧美性受xxxx黑人猛交88| 欧美日韩中文一区二区| 亚洲精品在线观看视频| sm一区二区三区| 蜜臀av性久久久久蜜臀aⅴ| 日韩av手机在线看| 在线能看的av网址| 欧美日韩久久久久| 男女私大尺度视频| 激情综合视频| 欧美高清在线观看| av软件在线观看| 亚洲卡通欧美制服中文| 日本成人性视频| japanese国产精品| 一本久久综合亚洲鲁鲁| 国产三级在线免费观看| 国产午夜亚洲精品羞羞网站| 欧美一区1区三区3区公司 | 国产成人免费在线| 3d动漫啪啪精品一区二区免费| 中文成人激情娱乐网| 亚洲自拍欧美精品| 一片黄亚洲嫩模| 日韩精品视频免费| 怡红院精品视频| 欧美一级淫片播放口| 999热视频| 在线观看日韩羞羞视频| 久久人人爽人人爽人人av| 羞羞网站在线观看入口免费| 日韩欧美电影在线观看| 亚色视频在线播放| 国产女王在线**视频| a天堂在线资源| 精品一区二区精品| 91精品久久久久久久久久 | 日韩av在线一区| 天堂91在线| 欧美精彩视频一区二区三区| 夜夜爽99久久国产综合精品女不卡| 天天做天天爱天天爽综合网| 欧美黄网免费在线观看| 91福利在线尤物|