I’m working with game center and wanted to have a singleton class for accessing the GK functionality which I’ve setup, but I then introduced a couple of methods which needed a delegate. Obviously delegates can’t really work properly with a singleton, but I want/need the data loaded in this class to be loaded once and be there all the time.
Is there a nice way that I’m missing of keeping the data there all the time, but having the class instantiated as and when it’s needed?
Yoy say “singleton class”, and by that I assume you mean that this class only has class methods. That’s fine, you can still use it, since class objects are still objects. That said, you will probably need to maintain state. Each delegate call will include some parameter that allows the object to identify the sender.
What I would probably do myself is create a NSMutableDictionary in an “initialize” method, then have objects register themselves before sending delegate methods, and when they register create another mutableDictionary, and save that in the first one with the sending object as the key (or some other unique identifier).
Every delegate call has to include the sender, and with that you can retrieve the dictionary associated with that object.