Выполняет ли SKTransition на SKScene уничтожение источника SKScene?

Выполняет ли SKTransition на SKScene уничтожение источника SKScene?

Например:

SKTransition *reveal = [SKTransition revealWithDirection:SKTransitionDirectionDown duration:1.0]; GameConfigScene *newScene = [[GameConfigScene alloc] initWithSize: CGSizeMake(1024,768)]]; // Optionally, insert code to configure the new scene. [self.scene.view presentScene: newScene transition: reveal]; 

Будет ли разрушена текущая сцена при выполнении перехода? Или все еще в памяти? Описывает ли новая сцена ссылку на старую сцену?

Предположим, что ваше свойство scene похоже на scene @property(weak) SKScene *scene; тогда ответ «ДА», будет уничтожен, когда вы представите другую сцену или вытащите ее из стека.
Если у вас есть ваша собственность, как @property(strong) SKScene *scene , тогда ответ НЕТ, ваша сцена останется в памяти, пока вы не сделаете это self.scene = nil;
Но помните, что SKView сетчато SKView сцену, поэтому вы должны использовать ее где-нибудь в своем приложении, чтобы избежать сохранения циклов (когда у вас есть сильное свойство).

ARC освободит старую сцену, если вы специально не указали ее в другом месте.

По умолчанию эта ссылка не упоминается в новой сцене.

Добавляя к предыдущим ответам, если вы все еще не уверены и хотите легко проверить, когда / если исходная сцена освобождена, вы можете сделать это просто, переопределив метод dealloc и зарегистрировав сообщение / установив точку останова, чтобы увидеть, была ли она вызвана по времени выполнения. Поместите это в свою старую сцену:

 -(void)dealloc { NSLog(@"Old scene deallocated"); } 

По умолчанию (если не указано иное в другом месте), он будет освобожден после завершения всего перехода, и новая сцена полностью переместится в ваше представление. Итак, на время перехода обе сцены будут существовать в памяти.