受け入れられた答えは誤解を招くものです。nib が使用されている場合だけでなく、awakeFromNib は常に呼び出されます。アップルのドキュメントから:
awakeFromNib:
Interface Builder アーカイブまたは nib ファイルから受信機をロードした後、受信機をサービス用に準備します。
リンク
次の例では、storyBoard のみを使用しました。これは非常に簡単にテストできます。
これが ViewController です。

ViewController.m:
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
NSLog(@"viewDidLoad");
}
-(void)awakeFromNib
{
NSLog(@"awakeFromNib in view controller");
}
@end
RedView.m:
#import "RedView.h"
@implementation RedView
-(void)awakeFromNib
{
NSLog(@"awakeFromNib inside RedView");
self.green.hidden = YES;
}
@end
印刷の順序:
- ビューコントローラーのawakeFromNib
- RedView 内の awakeFromNib
- viewDidLoad
そしてもちろん、緑の景色は隠されます。
編集:
コードのみを使用してビューを作成する場合、awakeFromNib は呼び出されませんが、自分で呼び出すか、独自のメソッドを作成することもできます。
StoryBoard を使用しない例 (コードのみ):
RedView.m:
#import "RedView.h"
@implementation RedView
-(void)loadRedView
{
NSLog(@"loadRedView");
self.green = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 100, 100)];
self.green.backgroundColor = [UIColor greenColor];
[self addSubview:self.green];
self.green.hidden = YES;
}
@end
ViewController.m:
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.red = [[RedView alloc]initWithFrame:CGRectMake(0, 0, 200, 200)];
self.red.backgroundColor = [UIColor redColor];
[self.view addSubview:self.red];
[self.red loadRedView];
}
@end