У меня много объектов с именами _Obj_1
, _Obj_2
и т. Д.
И я хочу выпустить все.
Я использую KVC. В частности, чтобы выпустить все, я использую:
MyClass *obj = nil;
for ( int i=1 ; i<=14; i++ ) {
obj = [self valueForKeyPath:[NSString stringWithFormat:@"_Obj_%d", i]];
[obj release];
}
Анализатор clang скажет мне для [obj release];
Неправильное уменьшение счетчика ссылок объекта, который на данный момент не принадлежит вызывающей стороне?
Как я могу это исправить?
Это не проект ARC.
1 ответ
Это очень легко исправить
Если объект не принадлежит вам (вы не называли его "сохранить"), не отпускайте его!
Вместо множества переменных с одинаковыми именами используйте массив для хранения объектов. Тогда высвобождение будет только высвобождением массива.
valueForKeyPath:
.
Похожие вопросы
Новые вопросы
iphone
НЕ ИСПОЛЬЗУЙТЕ этот тег, если вы не обращаетесь конкретно к iPhone и / или iPod touch от Apple. Для вопросов, не зависящих от оборудования, используйте тег [ios]. Больше тегов, которые нужно рассмотреть, это [xcode] (но только если вопрос касается самой IDE), [swift], [target-c] или [cocoa-touch] (но не [cocoa]). Пожалуйста, воздержитесь от вопросов, касающихся iTunes App Store или iTunes Connect. Если вы используете C #, пометьте [mono].