Большинство классов, таких как NSString , NSArray и т. Д., Имеют удобные конструкторы, такие как [NSString string]
и [NSArray array]
, которые возвращают автоматически освобожденные объекты. NSNumberFormatter не имеет удобных конструкторов. Таким образом, вы можете отправить сообщение autorelease
, чтобы оно автоматически высвобождалось при сливе пула автоматического выпуска.
NSNumber *theBalance = [[[[NSNumberFormatter alloc] init] autorelease]
numberFromString: [textField text]];
Если вы хотите сохранить (владеть) ссылку на объект, вы можете опустить autorelease
и отпустить его позже, когда закончите с ним. Вы делаете это так,
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
NSNumber *theBalance = [numberFormatter numberFromString: [textField text]];
// Later... somewhere in your code...
[numberFormatter release];
Я знаю, что вышеизложенное не является подробным объяснением. Я бы посоветовал вам прочитать этот пост , с помощью которого, я надеюсь, вы получите четкое представление об управлении памятью!