retain-cycle相关内容

核心数据 - 打破父上下文的保留周期

假设我们在核心数据模型中有两个实体:部门和员工. 部门与员工是一对多的关系. 我有以下 ManagedObjectContexts: - 根:连接到持久存储协调器 - 主要:与父根的上下文 当我想创建员工时,我会执行以下操作: - 我在主要上下文中有一个部门 - 我在主上下文中创建了一个员工 - 我将部门分配给员工的部门属性 - 我保存主上下文 - 我保存了根上下文 ..
发布时间:2022-01-14 20:12:01 其他开发

SpriteKit 没有释放所有使用的内存

我已经在 SO 和其他网站上准备了许多(如果不是全部)关于处理 SpriteKit 和内存问题的灾难的文章.我的问题和其他许多人一样,是在我离开 SpriteKit 场景后,几乎没有释放场景会话期间添加的任何内存.我已经尝试在我找到的文章中实施所有建议的解决方案,包括但不限于... 1) 确认在 SKScene 类中调用了 deinit 方法. 2) 确认场景类中没有strong对父V ..

了解保留循环的位置并删除它们

我想知道是否有一种简单的方法(或至少是一种方法)来找出程序中存在保留循环的位置.此外,如果我知道这些保留周期存在于何处,取决于它们的类型(例如变量或闭包),我如何使它们变弱.我需要使用 self(我的 GameScene)停止所有保留周期,以便在我不再需要它并且我想重新启动它时解除分配. 我们将不胜感激任何提示、建议、答案和反馈(最好提供具体的代码和示例).谢谢. 编辑:@Sweepe ..
发布时间:2022-01-01 11:17:14 移动开发

阻止并保留周期无法抓住它

我在块和弱引用方面遇到了问题,我在ARC下工作.我建立了一个类,它是一个免费项目,是围绕Google Directions API的一种简单包装,您可以在此处下载: - (void) getDirections{ __weak RouteMapViewController * weakSelf = self; self.routeObject = [[RouteDirectionsObje ..
发布时间:2020-07-06 00:19:28 移动开发

在水平流iOS 12中的TabbarCoordinator中未调用后退按钮

协调器模式是一个古老的话题,许多图书馆都试图解决它,我正在简单的示例应用程序中学习它. 我当前的设置是3个rootViewControlers:LoadingStateCoordinator,WelcomeCoordinator,TabBarCoordinator,但是UIKit和协调器之间缺少连接.我正在尝试使用UINavigationController来实现它,但是没有调用该按钮.我需要一种 ..

Swift:使用NSOperation保持周期

在我的应用程序中,我使用图像加载器类从网络加载图像以进行收集视图.当图像的单元格在集合视图中不再可见时,该类会跟踪下载操作并取消下载操作.此实现基于NSOperation的raywenderlich教程: http://www.raywenderlich. com/76341/use-nsoperation-nsoperationqueue-swift . 我使用NSOperation从网络 ..
发布时间:2020-07-06 00:18:18 移动开发

快速保留周期和关闭

我已经尝试了很多有关了解保留周期的研究.我似乎无法在示例中找到任何内容.我确实知道,如果我将属性设置为闭包,则会发生保留周期,并且需要使用弱函数或无主函数.但是我有两个示例,我想知道它们是否正确完成:预先感谢,我试图查看它们是否已经在stackoverflow上,但是找不到任何东西. 简单的动画 UIView.transitionWithView(self, duration: 5, ..
发布时间:2020-07-06 00:17:14 移动开发

如何使用CollectionView摆脱保留周期

由于我认为这是collectionview和viewcontroller之间的保留周期,因此我在销毁viewcontroller时遇到了麻烦.我试图使collectionview成为一个弱变量,但是当我尝试将collectionview添加到viewcontroller时,我现在得到的是nil.如果还有另一种方法可以尝试而不是使collectionview变弱,那么我也对此持开放态度. we ..
发布时间:2020-07-06 00:17:11 移动开发

UIView如何防止保留周期?

子视图引用了超级视图,而超级视图也引用了(子视图)子视图. 我想知道为什么这不会导致保留周期? 解决方案 UIView的superview属性声明为 @property(nonatomic, readonly) UIView *superview; 在Objective-C中,自引入ARC以来,默认情况下声明为没有不同所有权说明符的属性默认为assign strong,但是 ..
发布时间:2020-07-06 00:16:07 移动开发

不同的闭合为保留周期提供了不同的结果

我正在阅读Apple的《 Swift编程语言指南》.在有关闭合的强引用循环的部分中,我尝试了另一种类型的闭合,但未给出预期的输出. class HTMLElement { let name: String let text: String? lazy var asHTML : String = { //[unowned self] in if let text = s ..
发布时间:2020-07-06 00:16:05 移动开发

快速闭合导致自我强烈的保留周期

我只想知道我是否正确理解了这一点.因此,根据苹果公司的文档,当您将闭包作为类实例的属性创建并且闭包引用self(创建闭包属性的类)时,这将导致强大的保留周期,最终该类或闭包都不会被释放.因此,用外行术语来说,这意味着如果我有一个具有属性的类并且该属性是一个闭包,并且一旦我在声明闭包属性的类中分配了该闭包的功能,这将导致强烈的保留周期.这是我的意思的简单示例 class SomeViewCon ..
发布时间:2020-07-06 00:14:55 移动开发

知道保留周期在哪里并删除它们

我想知道是否有一种简单的方法(或至少一种方法)来找出程序中保留循环的位置.另外,如果我随后根据这些类型(例如变量或闭包)知道这些保留循环存在于何处,该如何使它们变弱.我需要使用self(我的GameScene)停止所有保留周期,以便在我不再需要它并希望重新启动它时将其分配. 任何提示,建议,答案和反馈,将不胜感激(并且最好提供特定的代码和示例).谢谢. 编辑: @Sweeper的答案正 ..
发布时间:2020-07-06 00:13:48 移动开发

obj-c弱自我在一个块中:为什么第二个在两个相似的情况下不需要弱自我

我终于发现我的内存错误是由在一个块中强烈引用self引起的.但是我不知道为什么在类似情况下不需要弱点: 我有一个CameraCaptureManager类来执行图像捕获任务,而CameraViewController具有此管理器的强大属性.管理器的弱委托属性指向控制器. 这是我必须在管理器中使用weakSelf的地方,否则-(void)dealloc将不会被调用: // ..

在一个或多个块中使用weakSelf时使用EXC_BAD_ACCESS

我一直在努力解决这个问题,因为我认为我不完全了解保留周期.我对此是完全陌生的,我正在尝试了解有关它的更多信息. 我收到带有以下代码的EXC_BAD_ACCESS消息. 我开始使用weakSelf,因为如果我仅使用self.successBLock();会收到2条有关保留周期的警告.确切的警告是: Capturing 'self' strongly in this block is ..