@ 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;
私のために問題を解決しました。
説明: 親 VC ( myViewController
)への参照UIViewController
がどこかに保管されています。この VC は SKScene への強い参照を持っていたため、一緒に保存されました。この SKScene がまだアクティブであるかのように、この SKScene からのコンソール出力さえありました。なぜこれが私に起こったのかについての私の最高の質問は、私が最も強力な指針を持っているということでした.
解決策 2:
私のmyViewController
中で:
- (void)viewDidDisappear:(BOOL)animated
私は呼びました :
self.ballonMGScene.parentVC = nil;
現在の VC ( ) を離れるときmyViewController
に、ポインタを nil に設定し、メモリとそれに付随するすべてのものを削除しました。
これらの2つのソリューションは私にとってはうまくいきました。デバッガーでテストしました。メモリ消費は正しく上下しました。
これが問題と解決策を理解するのに役立つことを願っています。