Как лучше всего сохранять и освобождать объекты, переданные методам класса?
Например, если у вас есть «переменная класса», объявленная так:
static NSString *_myString = nil
... это правильно:
+ (void)myClassMethod:(NSString *)param {
_myString = param;
}
... у которого есть недостаток, заключающийся в том, что вызывающему абоненту необходимо поддерживать ненулевой счетчик сохранения, чтобы он не был преждевременно освобожден. В качестве альтернативы можно сделать это:
+ (void)myClassMethod:(NSString *)param {
[_myString autorelease];
_myString = [param retain];
}
... у которого есть недостаток, заключающийся в том, что без соответствующего вызова dealloc
уровня класса это приведет к утечке памяти. Или же следует полностью избегать такого рода изменчивости класса, возможно, с помощью одноэлементного класса, который управляет временем жизни таких объектов более обычным способом?
Вот документы Apple по созданию одноэлементного экземпляра .
Код, с которым я работаю, является очень привлекательным (но все еще новым) проектом Objective Resource (http://www.iphoneonrails.com/).