The fact is that the class created using Interface Builder is unpacked and not initialized.
Archiving implies that the class is not initialized, but not archived; therefore, the initWithCoder: assumes responsibility for configuring the control when loading it using the archive attributes configured by Interface Builder.
You must put your initialization operations in the awakeFromNib: method, which is called in each case after loading the object, so you will be sure that your initialization statements will be called.
source share