Я реализую схему повторного использования объектов с использованием одноэлементного класса.
В основном я делаю:
MyClass* obj = [[MyClassBank sharedBank] getReusableItem];
Банк - это всего лишь NSMutableSet, настроенный для оптимального повторного использования.Когда я счастливо реализовывал этот синглтон, я имел в виду, что я просто сделаю следующее, когда я закончу с «obj»:
[[MyClassBank sharedBank] doneWithItem:obj];
В настоящее время мой код будет работать, если я буду использовать его где-тоКстати, но позже я понял, что иногда я добавляю «obj» к «NSCollection», а иногда я звоню:
[theCollection removeAllObjects];
Сначала я думал о создании своего собственного класса, который состоит из коллекции, затемЯ бы перебрал объекты в коллекции и вызвал бы:
[[MyClassBank sharedBank] doneWithItem:obj];
Но это слишком много хлопот, не так ли?
В мой разум пришла хорошая идея (я думаю), который должен переопределить: -(oneway void)release;
, поэтому я сразу же перешел к документации Apple, но застрял в следующем:
Этот метод можно реализовать только для определения собственной схемы подсчета ссылок.Такие реализации не должны вызывать унаследованный метод;то есть они не должны включать сообщение о выпуске для super.
Ao, я неохотно делал эту идею .. в основном:
-(oneway void)release{
if ([self retainCount] == 1) {
//This will increment retain count by adding self to the collection.
[[MyClassBank sharedBank] doneWithItem:self];
}
[super release];
}
Безопасно ли это делать?
PS: Извините за длинный пост, я хочу, чтобы вся идея была ясной ..
РЕДАКТИРОВАТЬ:
Как насчетпереопределить alloc
alltogther и добавить [[MyClassBank sharedBank] getReusableItem];
туда?