Как обрабатывать управление памятью для одноэлементного шаблона в Objective-C?

#objective-c #singleton

#objective-c #Одноэлементный

Вопрос:

Мой код:

 static Class1 *onlyInstance;
 (Class1*) getInstance {
  @synchronized([Class1 class]) {
  if(onlyInstance == nil)
    onlyInstance = [[Class1 alloc]init];
return onlyInstance;
 }
return nil;
}
  

Как управлять памятью с помощью одноэлементного шаблона в Objective-C?

Комментарии:

1. вы имеете в виду, как вы должны очистить одноэлементный класс?

2. Я хотел сказать, что когда и где я должен освободить объект onlyInstance, который я выделил.. Как управлять памятью с помощью созданного типа статической переменной.

Ответ №1:

Это одноэлементный шаблон, вам на самом деле не нужно выпускать его в любой момент времени, он должен быть рядом, когда вам это нужно.

Если вам нужно освободить его, вы можете сделать это из самого класса.

просто отпустите onlyInstance и установите для него значение nil, поэтому, как только метод, который создал его в первую очередь, будет вызван снова, он воссоздаст его.

Комментарии:

1. Но поскольку я возвращаю этот onlyInstance, как я могу освободить его там?

2. автоматический выпуск, но тогда вам понадобился бы не одноэлементный, а простой метод, такой как (MyClass *)MyClass { return [[[MyClass alloc] init] автоматический выпуск]; }