I have a class that calls another class to parse (NSXMLParse) from a URL. Now I would like for the class calling this one to know when it has finished, so that I can populate the UI. I am guessing a delegate would be the way to go but ive never worked with one and would need some guidance as to how this would be wired.
Thanks
Basically, delegation just means giving an object a pointer back to something that it needs to tell about what it’s doing. In Cocoa, this is usually handled through “protocols”, which are sort of the reverse of an interface declaration: they describe what methods an object will call on another object that “implements” the protocol. They’re not, strictly speaking, necessary, particularly in a simple situation like this, but they’re good practice and a good thing to know if you’re going to be writing modular code.
In the parsing class’s header:
In the parser’s implementation:
In the method in which the parser finishes its stuff:
In the UI class’s header:
In the UI class, wherever it sets up the parser,
then just implement the
-parsingDidEndWithResult:method on the UI class. If you have multiple parsers running at once, you might want to extend the delegate method to pass in the parser object itself—that’s kind of the Cocoa standard—but for the case you’ve described, this should do the trick.