No se puede get el encabezado UICollectionView para funcionar

Aquí hay un código relevante:

Controlador:

- (instancetype)init { UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; layout.itemSize = CGSizeMake(106.0, 106.0); layout.minimumInteritemSpacing = 1.0; layout.minimumLineSpacing = 1.0; layout.headerReferenceSize = CGSizeMake(320.0, 44.0); return (self = [super initWithCollectionViewLayout:layout]); } - (void)viewDidLoad { [super viewDidLoad]; // some setup self.collectionView.delegate = self; self.collectionView.dataSource = self; [self.collectionView registerClass:[ITPhotosHeaderView class] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"header"]; } - (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath { UICollectionReusableView *reusableView; if (kind == UICollectionElementKindSectionHeader) { ITPhotosHeaderView *headerView = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"header" forIndexPath:indexPath]; headerView = [[ITPhotosHeaderView alloc] initWithFrame:CGRectMake(0, 0, 320.0, 44.0)]; reusableView = headerView; } return reusableView; } 

Aquí está el error que recibo:

 *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'the view returned from -collectionView:viewForSupplementaryElementOfKind:atIndexPath (UICollectionElementKindSectionHeader,<NSIndexPath: 0xc000000000000016> {length = 2, path = 0 - 0}) was not retrieved by calling -dequeueReusableSupplementaryViewOfKind:withReuseIdentifier:forIndexPath: or is nil (<ITPhotosHeaderView: 0x1781b9de0; baseClass = UICollectionReusableView; frame = (0 0; 320 44); layer = <CALayer: 0x17802f980>>) 

Depuré y me aseguré de que no regresara nada. Por lo tanto, siento que la parte registerClass no funciona correctamente. Agradecería cualquier input. Gracias.

    Un problema definido está aquí:

      ITPhotosHeaderView *headerView = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"header" forIndexPath:indexPath]; headerView = [[ITPhotosHeaderView alloc] initWithFrame:CGRectMake(0, 0, 320.0, 44.0)]; 

    Ese código es absurdo. En la primera línea, dequeue la vista del encabezado. En la segunda línea, sin querer tirar la vista de encabezado que acaba de quitar y hacer uno completamente nuevo.