initWithCoder & initWithFrame & awakeFromNib

今天一同事在看一代碼片段的時候問我,為什么此處需要同時對initWithCoder 和 initWithFrame 進行初始化,我想了想這應(yīng)該是為了同時兼顧從文件和從代碼解析的對象初始化吧,然而發(fā)現(xiàn)自己對這幾個概念還是不太清晰,特此筆記下。

- (instancetype)initWithCoder:(NSCoder *)aDecoder ;
- (void)awakeFromNib;
- (instancetype)initWithFrame:(CGRect)frame;
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier;

一、initWithCoder & initWithFrame

  • initWithCoder:使用文件加載的對象調(diào)用(如從xib或stroyboard中創(chuàng)建)
  • initWithFrame:使用代碼加載的對象調(diào)用(使用純代碼創(chuàng)建)

二、awakeFromNib & initWithCoder

  • initWithCoder: 只要對象是從文件解析來的,就會調(diào)用initWithCoder
  • awakeFromNib: 從xib或者storyboard加載完畢就會調(diào)用

順序是: initWithCoder ===> awakeFromNib

三、initWithFrame & initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier

  • 此處是針對于UICollectionView 和 UITableView 自定義 Cell 的時候需要小注意下,UITableViewCell 是后者,而 UICollectionViewCell 是前者。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容