iOSUI視圖面試及原理總結

來源:互聯網
上載者:User

標籤:pat   有一個   拷貝   queue   資料來源   而且   並行   資料同步   二次   

摘要:

  1、UITableViewCell的重用機制描述一下?

  2、UITableView相關的資料來源同步問題,即如何在tableview解決多線程情況下,資料的處理?

  3、是否遇到過卡頓和掉幀的問題,如何解決的,為什麼出現卡頓和掉幀的問題?

  4、繪製繪製&非同步繪製、什麼是離屏渲染

  5、映像顯示的原理描述一下

  6、iOS中的事件傳遞流程和視圖響應流程

正問:

一、UITableViewCell的重用機制

在開發過程中,

- (nullable __kindof UITableViewCell *)dequeueReusableCellWithIdentifier:(NSString *)identifier;  - (__kindof UITableViewCell *)dequeueReusableCellWithIdentifier:(NSString *)identifier forIndexPath:(NSIndexPath *)indexPath NS_AVAILABLE_IOS(6_0); 
有這兩個方法調起UITableViewCell方的重用機制,在tableview建立的時候,會建立一個複用池viewreusepool,這個複用池在oc底層可能是一個隊列,儲存著當前cell.pool中的複用標識符就是reuseIdentifier,標識著不同種類的cell,所以當我們調用dequeueReusableCellWithIdentifier時,會通過當前reuseIdentifier尋找到對應的cell,也就是展示的原型。
在建立tableview的時候,會建立一個空的viewreusepool,然後在tableview內部對pool進行管理,一般有兩種用法,一種是取出一個空的cell的時候再去建立新的cell,另外一種是預先註冊cell,之後再直接從複用池取出來用,不需要初始化.
對於第一種用法:第一次調用tableView:cellForRowAtIndexPath由於複用池是空的,會首先建立cell添加到複用池中,第二次調用,當前複用池中有一個cell,這時候因為talbeview上面還未填滿,而且複用池的唯一的那個cell已經在使用了,所以取出來的cell仍然為nil,於是繼續建立一個cell並返回,複用池再添加一個cell,當前複用池中cell的個數為2.假如當前tableview只能容納5個cell.那麼在滾動到第6個cell時,從tableview的複用池取出來的cell將會是第0行的那個cell.以此類推,當滾動到第7行時,會從複用池取出來第1行的那個cell. 另外,此時不再繼續往複用池添加新的cell.
二、uitableview的資料來源同步問題
如何解決在tableview中多線程情況下資料同步的問題?
有兩種情況一:1、並行訪問,資料拷貝

iOSUI視圖面試及原理總結

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.