我遇到了像你@user2857148 类似的问题。我会向VC介绍:
[self presentViewController:myViewController animated:YES completion:nil];
在@implementation myViewController
我有:
- (void)viewDidLayoutSubviews
{
// Configure the view.
SKView * skView = (SKView *)self.view;
skView.showsFPS = YES;
skView.showsNodeCount = YES;
self.ballonMGScene = [[MBDBallonMiniGame alloc] initWithSize:skView.bounds.size andBallonImageNames:self.ballonObjectsArray];
self.ballonMGScene.parentVC = self;
self.ballonMGScene.scaleMode = SKSceneScaleModeAspectFill;
self.ballonMGScene.physicsWorld.gravity = CGVectorMake(0, 0);
// Present the scene.
[skView presentScene:self.ballonMGScene];
}
问题出在:
self.ballonMGScene.parentVC = self;
因为在:
@interface MBDBallonMiniGame : SKScene <SKPhysicsContactDelegate>
parentVC 被声明为 strong :
@property (nonatomic,strong) WBMMiniGameVCTemplate *parentVC;
解决方案1:
并将其更改为:
@property (nonatomic,weak) WBMMiniGameVCTemplate *parentVC;
为我解决了这个问题。
说明: 对作为 a 的 parentVC ( myViewController
)的引用UIViewController
已存储在某处。由于这个 VC 对 SKScene 有很强的引用,因此它与它一起存储。我什至有来自这个 SKScene 的控制台输出,就像它仍然处于活动状态一样。关于为什么会发生这种情况,我最好的问题是我有最有力的指示。
解决方案2:
在我的myViewController
下面:
- (void)viewDidDisappear:(BOOL)animated
我打了电话 :
self.ballonMGScene.parentVC = nil;
在离开当前的 VC ( myViewController
) 时,我将指针设置为 nil,删除内存和所有的东西。
这两种解决方案对我有用。我用调试器对其进行了测试。内存消耗正确地上升和下降。
希望这有助于理解问题和解决方案。