Ленивая загрузка в цели C

Я слышал ленивый метод загрузки, довольно полезный для увеличения производительности программы. Я разрабатываю игры для iPhone. Я не уверен, как путь состоит в том, чтобы применить ленивую загрузку в цели C. Кто-либо мог показать мне пример?

Заранее спасибо

20
задан nevan king 8 January 2010 в 08:16
поделиться

2 ответа

Общий шаблон для отложенной загрузки всегда более или менее одинаков:

- (Whatever *)instance
{
    if (_ivar == nil)
    {
        _ivar = [[Whatever alloc] init];
    }
    return _ivar;
}
  1. В вашем классе добавьте ivar нужного вам типа и инициализируйте его значением nil в конструкторе;
  2. Создайте метод получения для этого ivar;
  3. В получателе проверьте на ноль. Если да, создайте объект. В противном случае просто верните ссылку на него.
29
ответ дан 29 November 2019 в 23:44
поделиться

Вот пример отложенной загрузки из шаблона Core Data:

- (NSManagedObjectModel *)managedObjectModel
{
    if (managedObjectModel != nil) {
        return managedObjectModel;
    }
    managedObjectModel = [[NSManagedObjectModel mergedModelFromBundles:nil] retain];
    return managedObjectModel;
}

При первом запросе managedObjectModel он создается кодом. В любое время после этого он уже существует (! = Nil ) и просто возвращается. Это один из примеров отложенной загрузки. Есть и другие виды, такие как отложенная загрузка файлов NIB (загрузка их в память только тогда, когда они нужны).

6
ответ дан 29 November 2019 в 23:44
поделиться