UICollectionView without reusing cells

To disable cells reuse just dequeue your cell with a specific identifier for that cell index path, and register that identifier before hand.

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    NSString *identifier = [NSString stringWithFormat:@"Identifier_%d-%d-%d", (int)indexPath.section, (int)indexPath.row, (int)indexPath.item];
    [collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:identifier];

    UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath];

    // ...
    // ...
    // ...
}

Notice that reusing isn't completely disabled in the above method since there's an identifier for each cell, which is what everybody will probably need, but if you need to completely disable cells reusability you can do the following:

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    static int counter = 0;

    NSString *identifier = [NSString stringWithFormat:@"Identifier_%d", counter];
    [collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:identifier];

    UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath];

    counter++;

    // ...
    // ...
    // ...
}

IMPORTANT: I'm just answering the question here, this is totally not recommended, specially that second method.


the reinitialization of the cell might be a little heavy

It's unlikely that resetting the contents of a cell will be more expensive than creating a new one -- the whole point of cell reuse is to improve performance by avoiding the need to constantly create new cells.

Trying to initialize the cell without dequeueReusableCellWithReuseIdentifier I get the exception:

I'd take that as a strong indication that the answer to your question is no. Further, the documentation says:

...the collection view requires that you always dequeue views, rather than create them explicitly in your code.

So again, no.