首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在SKTransition上运行SKScene是否会破坏原始SKScene?

在SKTransition上运行SKScene是否会破坏原始SKScene?
EN

Stack Overflow用户
提问于 2014-02-19 11:55:27
回答 3查看 1.2K关注 0票数 3

在SKTransition上运行SKScene是否会破坏原始SKScene?

例如:

代码语言:javascript
复制
 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];

在执行过渡时,当前的场景会被销毁吗?还是还在记忆里?新的场景与旧的场景有联系吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-02-19 12:16:03

假设您的scene属性与此@property(weak) SKScene *scene;类似,则答案是肯定的,当您呈现另一个场景或将其从堆栈中弹出时,将被销毁。

如果您拥有像@property(strong) SKScene *scene这样的属性,那么答案是否定的,您的场景将留在内存中,直到您执行此self.scene = nil;操作为止。

但请记住,SKView视网膜显示的场景,所以您应该在您的应用程序中的某个地方,以避免保留周期(当您有强大的属性)。

票数 3
EN

Stack Overflow用户

发布于 2014-02-19 12:32:27

添加到前面的答案中,如果您仍然不确定并且希望轻松检查原始场景何时/是否已被释放,您可以简单地通过重写dealloc方法和记录消息/设置断点来查看运行时是否调用了它。把这个放在你以前的场景里:

代码语言:javascript
复制
-(void)dealloc {
    NSLog(@"Old scene deallocated");
}

默认情况下(如果没有在其他地方强烈引用),它将在整个转换完成并且新场景完全移动到您的视图后被释放。因此,在过渡期间,两个场景都将存在于内存中。

票数 2
EN

Stack Overflow用户

发布于 2014-02-19 11:58:09

弧线将取消旧场景,除非你特别强烈地引用到其他地方。

默认情况下,它不会在新场景中引用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21879747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档