I don't think this is related to your problem, however -storedView
does a lazy creation if it can't find the stored view (which is fine), BUT it doesn't associated that view it just created. I would have it store the view as well, that way there's no chance of it returning a new object that isn't associated.
Second, I'll admit I've not used that static char const * const
method of keying so I don't know if it could be giving you grief (a quick google shows others on SO are posting questions about associate issues and using the same keying method). There's another method of keying the associated objects which I use (and know is working) wherein you use the selector for the property/method that 'owns' that associated object as the key. It results in less code, and is self documenting which I'm a big fan of.
objc_setAssociatedObject(self, @selector(storedView), storedView, OBJC_ASSOCIATION_RETAIN_NONATOMIC);