我正在Objective-C中为iOS编写一个键盘扩展。 在viewController1
某一点,我呈现了另一个View Controller by
CustomViewController *viewController2 = [[CustomViewController alloc] init];
[self presentViewController:viewController2 animated:NO completion:nil];
在以下情形中会出现此问题:另一个应用程序打开,我的扩展名为活动键盘。 正在显示viewController2
并退出扩展(通过按主页按钮)。 当应用程序重新启动时, viewController2
不再显示,但viewController1
是。 从内存消耗中我可以看到viewController2
仍在内存中。 由于内存消耗过多,重复本段中的步骤很快就会导致崩溃。
在viewController2
中执行普通用户操作后不会发生这种情况
[self dismissViewControllerAnimated:NO completion:nil];
叫做。 此外,我100%确定没有强引用可能导致内存泄漏。 我还试图在( viewWillDisappear
等)调用dismissViewControllerAnimated:NO
时收到一条消息dismissViewControllerAnimated:NO
,但似乎按下主页按钮会立即杀死扩展名。
viewController1
是一个UIInputViewController
,充当CLLocationManager
和UICollectionView
, viewController2
是一个UIViewController
,根本不作为委托。 我不保留任何参考viewController1
到viewController2
,并从一个很脆弱的viewController2
到viewController1
。
@property (weak, nonatomic) viewController1 *parent;
有谁知道发生了什么? 我该怎么做才能防止这种情况发生?
非常感谢你的帮助!