Утечка при настройке MKAnnotation Title и SubTitle - PullRequest
1 голос
/ 14 декабря 2011

У меня есть утечка со следующим кодом, который накапливается!Почему у меня есть эта проблема?Это связано с тем, что копирование свойств внутри NSString.Есть ли способ обойти это?

@property (nonatomic, copy) NSString *reg;
@property (nonatomic, copy) NSString *reg2;
@property (nonatomic, copy) NSNumber *altitude;
@property (nonatomic, copy) NSNumber *heading;

-(void)updateTitles{

    self.title=[NSString stringWithFormat:@"%@ %@",self.reg,self.reg2];
    self.subtitle = [NSString stringWithFormat:@"%@ft %@°",self.altitude,self.heading];

}

Утечка составляет 50% при каждой настройке свойств внутри этого метода.

ОБНОВЛЕНИЕ

Оказывается, это было вызвано в конце концов из блока.Чтобы попытаться обойти это, я сделал следующее.

Следующие работы, но все еще утечки, теперь ясно, что «я» сохраняется.работа дает нераспознанный селектор по методу setTitle !!!!!

-(void)updateTitles{
    __block NSString *thisTitle = [[NSString alloc] initWithFormat:@"%@ %@",self.reg1,self.reg2];
    __block NSString *subTitle = [[NSString alloc] initWithFormat:@"%@ft %@°",self.altitude,self.heading];

    __block __typeof__(self) blockSelf = self;

    dispatch_queue_t mainQueue = dispatch_get_main_queue();
    dispatch_async(mainQueue,^(){

        [blockSelf setTitle:thisTitle];
        [blockSelf setSubtitle:subTitle];

        [thisTitle release];
        [subTitle release];
    });
}

1 Ответ

1 голос
/ 14 декабря 2011

Предполагая, что вы не используете ARC, есть ли у объекта, обладающего вышеуказанными свойствами, метод dealloc, и правильно ли он выпускает ивары? Этот объект сам по себе освобождается какими-либо объектами, которые его удерживают?

Имеет ли значение переопределение методов получения вместо установки заголовка / субтитра:

-(NSString *) title
{
    return [NSString stringWithFormat:@"%@ %@",self.reg,self.reg2];
}

и т.д.

...