Некоторые методы, такие как soundNamed
, выделяют объект с автоматическим освобождением и возвращают его.В качестве примера, и давайте представим, что эти 2 метода существуют:
call:
NSSound *favoriteSong = [NSSound soundNamed:@"Friday"];
возвращает выделенный объект NSSound, инициированный с помощью @ "Friday".Этот возвращенный объект автоматически освобожден.
call:
NSSound *favoriteSong = [[NSSound alloc] initWithSoundNamed:@"Friday"];
возвращает выделенный объект NSSound, инициированный @ "Friday".Этот возвращенный объект сохраняется и должен быть освобожден.
Эти два вызова будут выполнять одно и то же:
NSSound *favoriteSong = [NSSound soundNamed:@"Friday"];
NSSound *favoriteSong = [[[NSSound alloc] initWithSoundNamed:@"Friday"] autorelease];
В качестве ярлыка soundNamed выглядит примерно так:
+ (id) soundNamed:(NSString*)name
{
NSSound* aSound = [[NSSound alloc] initWithSoundNamed:name];
if (!aSound) return nil;
return [aSound autorelease];
}