Вопросы по addObserver, попробуйте проверить, загружены ли данные - PullRequest
0 голосов
/ 01 июля 2010

У меня есть ViewController, который инициализирует другой класс, который загружает данные в изменяемый массив и сохраняет его как свойство в себе.

вот мой код инициализации ViewController:

-(id) initWithCollectionID:(NSString *)aCollectionID {
    if (self = [super init]){
        collectionID=aCollectionID;
        dataSource = [[CollectionListDataSource alloc] initWithCollectionID:collectionID];
    }
    return self;
}

как только dataSource загрузит все данные в его свойство dataSource.collectionItems Я устанавливаю dataSource.loaded = @ "true";

как мне использовать addObserver для отслеживания этого значения и запуска функции в моем ViewController?

что-то вроде этого я бы предположил:

[self addObserver:dataSource forKeyPath:@"loaded" options:NSKeyValueChangeNewKey context:nil];

Тогда что мне делать?

1 Ответ

1 голос
/ 01 июля 2010

Поскольку ваш код стоит сейчас, он будет приостановлен до загрузки данных независимо от того, используете ли вы уведомления или нет.Он не будет проходить мимо:

dataSource = [[CollectionListDataSource alloc] initWithCollectionID:collectionID];

... до тех пор, пока объект CollectionListDataSource не завершит свою собственную инициализацию (что, я полагаю, также означает загрузку его данных) и не вернет свой экземпляр.

Если вы хотите, чтобы объект CollectionListDataSource загружался, пока контроллер представления продолжает инициализироваться, вам нужно поместить объект CollectionListDataSource в другой поток.Однако вы не можете иметь объект атрибута, работающий в отдельном потоке.

Тебе редко приходится прыгать через такие обручи.Если этот массив не очень большой (10 000+ объектов), вам, скорее всего, не о чем беспокоиться.В большинстве случаев вам нужны данные, прежде чем представление может функционировать в любом случае, поэтому нет смысла позволять представлению продолжаться без данных.

Если вам действительно нужно наблюдать атрибут другого объекта, см. Руководство по программированию значения ключа: регистрация наблюдения значения ключа для получения подробной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...