iOS UITableView 引起的崩潰問題

來源:互聯網
上載者:User

標籤:

 其實 UITableView 應該是在iOS開發中使用最頻繁的一個控制項,一次同事之間聊天玩笑的說“一個頁面,要是沒使用UITableView,就好像稱不上是一個頁面”。雖然是個最常見的控制項,但是他的強大是不可否認的,也是出錯很高的一個控制項。

1.

- (UITableViewCell *)dequeueReusableCellWithIdentifier:(NSString *)identifier forIndexPath:(NSIndexPath *)indexPath 

 

其實這個方法已經存在很久了,但是想我這樣接受新鮮事物能力差一點的人,還是用不習慣。

使用這個方法需要配套使用

- (void)registerNib:(nullable UINib *)nib forCellReuseIdentifier:(NSString *)identifier NS_AVAILABLE_IOS(5_0);- (void)registerClass:(nullable Class)cellClass forCellReuseIdentifier:(NSString *)identifier NS_AVAILABLE_IOS(6_0);

需要在前面先註冊cell,再進行使用,具體的方法網上應該有很多的介紹,在這裡我就不多說了,這樣使用完代碼非常整潔。

不過需要說明的是,如果不先進行註冊,則會引起崩潰。

今天要說明的第一個閃退,引起的原因就是這個,

self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;

上面這段代碼,看起來正常無比,但是今天引起閃退的主角就是它,原因就是它加錯了位置。

它被放在了註冊cell之前,tableView在進行分割線的設定時候,找到了自己的cell,發現cell並沒有,然後引起了閃退。

解決辦法 把

 

self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;放在

 

registe之後就可以了;

2.layout引起的閃退

 

-(void)layoutSubviews{    [super layoutSubviews];}

 

 

 

咦!!!又是很常見的代碼呀,雖然前輩們經常教育我們,不要在這裡處理太多的邏輯,代碼,但是我們還是喜歡把大量的代碼,尤其是效果放在這個裡面,因為真的很好用。

不過這裡 好用是好用,但是不能亂用,這裡說實話呢,是真的不應該放太多的處理,除非不得不,而且使用的時候也有要注意的地方,這次我們一起閃退就是在

 [super layoutSubviews];

 

後面進行了一些autolayout的操作,導致崩潰

 

以上就是我今天和大家分享一點開發中遇到的問題,歡迎各位高手補充呀,說的不對的地方求指正!!!


iOS UITableView 引起的崩潰問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.