Привет, я имею дело с утечкой памяти, но я не могу понять, в чем проблема (у меня нет большого опыта работы с инструментами, поэтому, пожалуйста, извините меня, если я прошу что-то очевидное) ,NSString stringwithFormat утечка памяти с ARC
В принципе у меня есть две строки, как свойства в моем классе, первое, что будет показано пользователю извлекается в основной очереди, и один, что не требуется немедленно извлекается в фоновом очереди:
@property (nonatomic, strong) NSString *stringDefaultLocationAddress;
@property (nonatomic, strong) NSString *stringCurrentLocationAddress;
-(void)viewDidLoad{
...
dispatch_async(idQueue, ^(void) {
[self recuperaDireccionActualEnBackground:currentUserLocation.coordinate];
});
}
- (void)dealloc{
[self removeObserver:self forKeyPath:@"playerProfileNeedsUpdate"];
self.stringCurrentLocationAddress = nil;
self.stringDefaultLocationAddress = nil;
}
Но я получаю эту утечку в инструментах:
проблема связана с заполнителями @ «% @ ...» в stringWithFormat, потому что если я просто положить @ „тест“ в этот момент утечка исчезла, но я не знаю, почему lea король, и я хотел бы это понять.
Заранее благодарен.
Если вы положили только '@" Test ", вы создаете постоянную времени компиляции, которая не может протекать. Сообщение '- [NSString copy]' приводит к копированию, когда оно изменено (подкласс 'NSMutableString') или сохраняется, когда оно является неизменным (подкласс' NSString'). Поэтому всегда копируйте при объявлении 'NSString'. Копирование изменяемой строки гарантирует, что клиент не будет удаленно изменить значение, которое вы сохранили в свойстве. Если вы используете iOS 5, у вас есть геокод и обратный геокод в 'CLGeocoder', вам не нужна библиотека. Вам не нужно указывать переменные в 'dealloc', ARC уже освобождает свойства. – Jano
Благодарю вас @Jano за ваш ответ. Я только что добавил сообщение COPY этой строке, и теперь у меня нет утечки памяти, спасибо за ваш добрый ответ. – Rubs
Я имел в виду объявленный: @property (неатомный, COPY) NSString * stringDefaultLocationAddress; – Rubs