Поскольку ваш код стоит сейчас, он будет приостановлен до загрузки данных независимо от того, используете ли вы уведомления или нет.Он не будет проходить мимо:
dataSource = [[CollectionListDataSource alloc] initWithCollectionID:collectionID];
... до тех пор, пока объект CollectionListDataSource
не завершит свою собственную инициализацию (что, я полагаю, также означает загрузку его данных) и не вернет свой экземпляр.
Если вы хотите, чтобы объект CollectionListDataSource
загружался, пока контроллер представления продолжает инициализироваться, вам нужно поместить объект CollectionListDataSource
в другой поток.Однако вы не можете иметь объект атрибута, работающий в отдельном потоке.
Тебе редко приходится прыгать через такие обручи.Если этот массив не очень большой (10 000+ объектов), вам, скорее всего, не о чем беспокоиться.В большинстве случаев вам нужны данные, прежде чем представление может функционировать в любом случае, поэтому нет смысла позволять представлению продолжаться без данных.
Если вам действительно нужно наблюдать атрибут другого объекта, см. Руководство по программированию значения ключа: регистрация наблюдения значения ключа для получения подробной информации.