OK, well, it's possible in simplifying the code you have actually removed the source of the bug.
From what I see here, I would make sure you are advancing beyond this line before you check the pois array:
Code:
POI *poi = [appDelegate.pois objectAtIndex:0];
If the program counter is stopped at that line, it means that line has not yet been executed.
Also is POI initWithName actually retaining those two strings (name and type)?