XCode предполагает, что метод [NSString initWithFormat]
(как указано в окне «Инструменты») является источником утечки памяти. В нем указан конкретный метод, поэтому в этом методе я идентифицировал единственную строку кода с initWithFormat
(в отличие от некоторых утечек, определенных в Instruments, эта причина по какой-то причине не приведет меня к точной ошибочной строке кода):
NSString * name=[[NSString alloc] initWithFormat:@"%@",[[lineArray objectAtIndex:0] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] ];
CustomObject * newData=[[CustomObject alloc] init];
newData.info=name; // info is a retained NSString ivar of CustomObject
[name release];
[self.ivar setObject:newData forKey:@"key"];
[newData release];
initWithFormat
и release
находятся в одной и той же области видимости: оба находятся внутри оператора if
.
Существуют ли некоторые методы NSString, которые каким-то образом вызывают initWithFormat
, если это не очевидно в коде? Такие как эти stringByTrimmingcharactersInSet
методы типа?
ОБНОВЛЕНИЕ: я добавил весь код между initWithFormat
и release
- Кроме того, даже если я изменю initWithFormat
на stringWithFormat
, Xcode выдаст мне ту же утечку памяти, вместо этого идентифицируя stringWithFormat
, так что это явно объект, вызывающий проблему.