... Вы понимаете, что значит асинхронный?Это означает, что ваша функция вернется, и соединение продолжится, сделав обратные вызовы, когда будет готово.Как вы это закодировали, вы запускаете соединение, а затем сразу же пытаетесь использовать данные - это еще не так!Вам нужно подождать, пока после connectionDidFinishLoading, прежде чем пытаться использовать массив.
Проведите еще несколько исследований о том, что именно означает быть асинхронным;кажется, вы этого не понимаете.
Редактировать
Позвольте мне уточнить, поскольку вы, похоже, не поняли мою точку зрения.Ваша функция viewDidLoad завершается задолго до того, как будет вызван обратный вызов connectionDidFinishLoading, и поэтому, конечно, массива newsStories еще нет.Когда вы вызываете:
[news parseXMLFileAtUrl:latestUrl];
в функции loadData, это не останавливает и не ожидает возврата соединения;если бы это было синхронно, то было бы, но асинхронно - нет.(Поэтому я прошу вас исследовать, что на самом деле означает асинхронность, чего, очевидно, вы еще не сделали).Поскольку этот вызов возвращается, а затем вы сразу же пытаетесь использовать загруженные данные (задолго до вызова connectionDidFinishLoading), у вас, естественно, нет никаких данных.