Intereting Posts
Как создать клиента STRIPE с помощью API STRIPE в IOS? UIDatePicker и дата не сохраняются должным образом Как создать и переместить узел по заданному пути? Какая минимальная версия iOS, необходимая для использования Facebook iOS SDK 3.1? Получать результаты из словаря Firebase? на пинче, представление изображения сдвигается назад к исходному фронту кадра даже после панорамирования в другое место CloudKit / iCloud – Сценарий учителя / ученика Facebook iOS SDK DemoApp показывает «Извините, произошла ошибка» даже после конфигурации идентификатора приложения TestFlight 2.0.0: «MyApp» несовместим с этим устройством Почему мой UINavigationBar не будет оживлять? «Использование Undeclared Identifier» в AppDelegate (iOS) Незаконная инструкция: 4 для iOS SDK для совместного использования социальных сетей в iOS Как он не знает, что такое AppDelegate? Использовать компилятор для управления реализацией делегата?

Выполняет ли 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"); } 

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