Am I required to call UICollectionView's dequeueCell: from within the data source's cellForPath:?

The only reason for calling dequeueReusableCellWithReuseIdentifier:forIndexPath: is to reuse cells. But a "static" collection view? How many cells are we talking about? If I had a collection view small enough that it never scrolled, I would consider not bothering to reuse cells at all. That would certainly solve the problem neatly. After all, a static table from the storyboard isn't reusing cells; that is what makes it static. So I would say, drop the stuff about dequeueReusableCellWithReuseIdentifier:forIndexPath altogether and just supply cells when asked.

There is nothing magical about dequeue; it's just a way of finding out whether there are any cells in the reuse pile, and getting one if so. After all, consider how table views worked in, say, iOS 4. You said dequeue, but if there were no reusable cells to give back, the table returned nil and you had to alloc-init your own cell or pull it out of a nib, yourself. Well, you are proposing to do that for all items in the collection view. Go right ahead.


Response from the Apple TSI Guy:

Although you said your app works, you really should use "dequeueReusableCellWithReuseIdentifier" from within the data source method "cellForItemAtIndexPath". That is the supported use pattern. Don't try to hold on you MyCellClass, let the collection view manage that and it will ask you to dequeue it if necessary.

I'm going to pout a little, change my code, and then issue an enhancement request. But I tell you it worked just fine!